3

別のテンプレートarea.html.twigをレンダリングするテンプレートがあります。

//area.html.twig
...

{% render 'Acme:User:restricted.html.twig' %}

...

スローされた例外を無視してキャッチし、restricted.html.twig代わりに何もレンダリングしない方法はありますか?

4

1 に答える 1

7

テンプレートで埋め込みコントローラーを使用する必要があります。

{% 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()
                    ));
      }
于 2013-01-14T16:29:35.880 に答える