Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Slim Framework中呈现404错误的自定义模板_Php_Error Handling_Slim - Fatal编程技术网

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

Php 如何在Slim Framework中呈现404错误的自定义模板,php,error-handling,slim,Php,Error Handling,Slim,我正在使用Slim 3进行渲染。我正在对渲染器进行如下初始化: ... $container['view'] = new \Slim\Views\PhpRenderer("../mytemplatesfolder/"); $app = new \Slim\App(); $container = $app->getContainer(); $container['renderer'] = new PhpRenderer("templates"); $app->get('/som

我正在使用Slim 3进行渲染。我正在对渲染器进行如下初始化:

...

$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");
});
我可以在我的路线中呈现模板,没有任何问题,如下所示:

...

$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");
});
当404错误发生时,如何呈现自定义模板(使用PHP视图,而不是细枝)


我发现使用了Twig,但我不知道如何使用PHP视图来实现它。

考虑到您有这样一个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();

:)

工作起来很有魅力!非常感谢你的朋友!