【问题标题】:How to render a custom template for the 404 error in Slim Framework如何在 Slim 框架中为 404 错误呈现自定义模板
【发布时间】:2017-04-08 07:49:01
【问题描述】:

我正在使用 Slim 3 进行渲染,我使用的是 PHP-View。我正在像这样启动渲染器:

...

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

$app = new \Slim\App();

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

我可以在我的路由中毫无问题地渲染模板,如下所示:

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

我如何呈现自定义模板(使用 PHP-View,而不是 Twig)发生 404 错误时?

我使用 Twig 找到了this answer,但我不知道如何使用 PHP-View 来做到这一点。

【问题讨论】:

    标签: php error-handling slim


    【解决方案1】:

    鉴于您有这样的 composer.json:

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

    这是一个示例应用程序:

    <?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();
    

    这里是 404.php 模板(请注意,它位于app.php 中指定的/templates 子文件夹下):

    <?php
    echo 'CONTENT NOT FOUND';
    

    :)

    【讨论】:

    • 像魅力一样工作!非常感谢你的朋友!
    猜你喜欢
    • 2019-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多