別のテンプレートarea.html.twig
をレンダリングするテンプレートがあります。
//area.html.twig
...
{% render 'Acme:User:restricted.html.twig' %}
...
スローされた例外を無視してキャッチし、restricted.html.twig
代わりに何もレンダリングしない方法はありますか?
テンプレートで埋め込みコントローラーを使用する必要があります。
{% render "yourBundle:Controller:action" with { 'data': data, } %}
ルートでこれを行う方が良いです ( symfony security updateの時点で):
{% render url('theactionroute', { 'data': data }) %}
アクションでは、必要なものを確認し、状況によっては空白の応答/テンプレートを返すことができます。
テンプレートのレンダリングを try & catch ブロックでラップし、小枝の例外が発生した場合にエラー テンプレートを返すこともできます。
try {
$response = $this->render('yourBundle:Default:action.html.twig',
array('data' => $data));
} catch (\Exception $exc) {
return $this->render('yourBundle:Default:error.html.twig', array(
'message' => $exc->getMessage()
));
}