duanrang9348 2017-04-07 22:24
浏览 76
已采纳

如何在Slim Framework中为404错误呈现自定义模板

I'm working with Slim 3 and for rendering I'm using PHP-View. I'm iniating the renderer like this:

...

$container['view'] = new \Slim\Views\PhpRenderer("../mytemplatesfolder/");

$app = new \Slim\App();

$container = $app->getContainer();
$container['renderer'] = new PhpRenderer("templates");

I can render the templates without any problem in my routes, like this:

$app->get('/someroute', function (Request $request, Response $response){
    return $this->renderer->render($response, "/onetemplate.phtml");
});

How can I render a custom template (using PHP-View, not Twig) when the 404 error happens?

I found this answer using Twig, but I can't figure it out how to to do it using PHP-View.

  • 写回答

1条回答 默认 最新

  • dongyunque2511 2017-04-07 23:49
    关注

    Given that you have a composer.json like that:

    {
        "require": {
            "slim/slim": "^3.0",
            "slim/php-view": "^2.2"
        }
    }
    

    Here it is an example application:

    <?php
    use \Psr\Http\Message\ServerRequestInterface as Request;
    use \Psr\Http\Message\ResponseInterface as Response;
    use \Slim\Views\PhpRenderer;
    
    require '../vendor/autoload.php';
    
    $app = new \Slim\App;
    $container = $app->getContainer();
    $container['renderer'] = new PhpRenderer("./templates");
    $container['notFoundHandler'] = function ($container) {
        return function ($request, $response) use ($container) {
            return $container['renderer']->render($response, "/404.php");
        };
    };
    
    $app->get('/hello/{name}', function (Request $request, Response $response) {
        $name = $request->getAttribute('name');
        $response->getBody()->write("Hello, $name");
    
        return $response;
    });
    
    $app->run();
    

    And here it is the 404.php template (please notice that it is placed under the /templates subfolder as specified in app.php):

    <?php
    echo 'CONTENT NOT FOUND';
    

    :)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮