2017-04-07 105 views
0

我正在使用Slim 3和渲染我正在使用PHP-View。我iniating渲染這樣的:如何爲Slim框架中的404錯誤渲染自定義模板

... 

$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 - 查看,而不是樹枝)當404錯誤發生?

我發現this answer使用Twig,但我無法弄清楚如何使用PHP-View做到這一點。

回答

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'; 

:)

+0

工程就像一個魅力!朋友,非常感謝您! – Lioo