2017-04-07 23 views
0

私はSlim 3で作業しており、レンダリングにはPHP-Viewを使用しています。私はPHPを使用して(カスタムテンプレートをレンダリングするにはどうすればよいSlim Frameworkで404エラーのカスタムテンプレートをレンダリングする方法

$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"); 

:私はこのようなレンダラをiniatingよ - ビュー、ないtwig)404エラーが発生すると?

私がthis answerを見つけたのはTwigですが、PHP-Viewを使用してそれを行う方法を理解できません。あなたがそのようなcomposer.jsonを持っていることを考えると

答えて

1

{ 
    "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テンプレートである(ということを何卒ご了承下さい

<?php 
echo 'CONTENT NOT FOUND'; 

app.phpに指定され/templatesサブフォルダ)の下に配置されます:)

+0

魅力的な作品です!本当にありがとうございました! – Lioo

関連する問題