マイクロカーネルのセットアップをご利用いただきありがとうございます。例外ビューをオーバーライドする方法は次のとおりです。
1. カスタム ExceptionController を作成する
まず、ベースの ExceptionController を拡張する独自の ExceptionController を作成します。これにより、テンプレート パスを上書きできます。
<?php
namespace AppBundle\Controller\Exception;
use Symfony\Bundle\TwigBundle\Controller\ExceptionController as BaseExceptionController;
use Symfony\Component\HttpFoundation\Request;
class ExceptionController extends BaseExceptionController
{
/**
* @param Request $request
* @param string $format
* @param int $code
* @param bool $showException
*
* @return string
*/
protected function findTemplate(Request $request, $format, $code, $showException)
{
$name = $showException ? 'exception' : 'error';
if ($showException && 'html' == $format) {
$name = 'exception_full';
}
// For error pages, try to find a template for the specific HTTP status code and format
if (!$showException) {
$template = sprintf('AppBundle:Exception:%s%s.%s.twig', $name, $code, $format);
if ($this->templateExists($template)) {
return $template;
}
}
// try to find a template for the given format
$template = sprintf('@Twig/Exception/%s.%s.twig', $name, $format);
if ($this->templateExists($template)) {
return $template;
}
// default to a generic HTML exception
$request->setRequestFormat('html');
return sprintf('@Twig/Exception/%s.html.twig', $showException ? 'exception_full' : $name);
}
}
2. エラー テンプレートを作成する
さまざまなエラー コードのテンプレートを作成します。
- error.html.twig
- error403.html.twig
- error404.html.twig
この例では、例外テンプレートは次の場所に配置されます。AppBundle/Resources/views/Exception/
3. デフォルトの ExceptionController をオーバーライドする
次に、構成で新しい例外コントローラーを指定しましょう。
twig:
exception_controller: app.exception_controller:showAction