0

Symfony 2 の Twig ビュー内からサブ名前空間コントローラーにあるアクションをレンダリングしようとしています。

問題は次のとおりです。 Controllerの下の名前空間にあるため、レンダー ヘルパーはコントローラー/アクションを見つけることができません。

これは私のコントローラーです: src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.php

namespace Acme\Bundle\TestBundle\Controller\FirstModule;

class ExampleController extends Controller
{
    public function exampleAction(Request $request)
    {
        return $this->render('AcmeTestBundle:FirstModuleExample:example.html.twig');
    }

    public function embedAction(Request $request)
    {
        return $this->render('AcmeTestBundle:FirstModuleExample:embed.html.twig');
    }
}

これは私の見解です: src/Acme/Bundle/TestBundle/Resources/views/FirstModuleExample/example.html.twig

{% render "AcmeTestBundle:Example:embed" %}
// or
{% render "Acme\Bundle\TestBundle\Controller\FirstModule\Example:example" %}
// or
{% render "Acme\Bundle\TestBundle\Controller\FirstModule\ExampleController:exampleAction" %}

埋め込みコントローラーのドキュメントを読みましたが、サブ名前空間にあるコントローラーを処理する方法がわかりません。

ありがとう。

4

3 に答える 3

4

これらのいずれかが機能するはずです。文字列のバックスラッシュはエスケープする必要があることを覚えておいてください (つまり、二重にする)。

{% render "AcmeTestBundle:FirstModule\\Example:embed" %}

また

{% render "Acme\\Bundle\\TestBundle\\Controller\\FirstModule\\ExampleController::embedAction" %}
于 2012-05-09T21:32:04.850 に答える
1

これを試しましたか?

{% render "AcmeTestBundle:FirstModule/Example:embed" %}

またはこれ?

{% render "AcmeTestBundle:FirstModule\\Example:embed" %}
于 2012-05-09T21:12:20.667 に答える
0

バックスラッシュ表記を使用できるはずだと思いますが、すべてのコントローラーを単一の名前空間に配置する練習をしているので、試していません(コントローラーがたくさんある場合は悪いことです)。

このようなもの:

{% render "Acme\Bundle\TestBundle\Controller\FirstModule\Example:example" %}
于 2012-05-09T20:56:38.537 に答える