2012-05-09 89 views
0

我試圖呈現一個行動,這是在子命名空間中的控制器從Symfony的2如何從Symfony 2中的子名稱空間控制器中嵌入動作?

問題是一根樹枝視圖中:渲染助手找不到控制器/行動,因爲它是在一個命名空間低於控制器

這是我的控制器: 的src/Acme公司/包/ TestBundle /控制器/ 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公司/包/ TestBundle /資源/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" %} 

我已閱讀Embedding Controllers文檔,但沒有任何線索那裏如何處理在子命名空間中的控制器。

謝謝。

回答

4

這些都應該工作。請記住,在字符串中的反斜槓需要轉義(即增加一倍)

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

​​
+0

謝謝你的工作!恥辱Symfony不包括在文檔中。 – ilanco

+0

他們這樣做,只是不在該頁面上。在花費時間使用視圖/控制器系統之後,通過'Bundle:Controller:Action'或'FQCN :: actionName',您可以很方便地引用它們 –

0

我認爲你應該可以使用反斜槓符號,但是我沒有嘗試過,因爲我試圖將所有控制器放入單個命名空間(如果你有很多這樣的命名空間,這是不好的)。

事情是這樣的:

{% render "Acme\Bundle\TestBundle\Controller\FirstModule\Example:example" %} 
+0

試過了,沒有工作。 '在第1行的AcmeTestBundle:FirstModule:example.html.twig中呈現模板期間(「您請求了不存在的服務」acmebundletestbundlecontrollerfirstmoduleexample「。」)時拋出了異常。' – ilanco

1

你試過嗎?

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

or this?

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

有趣的是,頁面已呈現並且在頁面上出現以下錯誤:致命錯誤:無法在...中重新聲明類Acme \ Bundle \ TestBundle \ Controller \ FirstModule \ ExampleController ...' – ilanco

+0

清除緩存後,出現另一個錯誤:'在渲染過程中拋出異常在文件「../src/Acme/Bundle/TestBundle/Controller/FirstModule/ExampleController.php」中定義的模板(「自動裝載機預期類」Acme \ Bundle \ TestBundle \ Controller \ FirstModule/ExampleController「)。但類不在其中,類名或命名空間可能有一個錯字。「)在AcmeTestBundle:FirstModuleExample:example.html.twig在第1行。' – ilanco

+0

我用另一個e更新了我的答案xample(嘗試用名稱空間分隔符替換目錄分隔符)。 –

相關問題