2016-02-01 37 views
0

我跟着這篇文章:缺少_fragment - 嵌入式控制器

http://symfony.com/doc/current/book/templating.html#embedding-controllers

我得到這些錯誤:

InvalidArgumentException:控制器 「CompanyBundle:默認:displayTimeline」 的URI「/ _fragment 「不是 可調用

Twig_Error_Runtime:在渲染過程中拋出異常模板的( 「控制器 」CompanyBundle:默認值:displayTimeline「 爲 URI 」/ _fragment「 不是可調用」。)在 CompanyBundle:默認:manage.html.twig在管線26

我有添加以下內容:

# app/config/config.yml 
framework: 
    # ... 
    fragments: { path: /_fragment } 

我在想什麼?文章中的控制器看起來像其他任何控制器?我刷新緩存並重新加載。

編輯|將「操作」添加到控制器方法和模板調用中。

我的模板代碼:

{{ render(controller('CompanyBundle:Default:displayTimelineAction')) }} 

我的控制器代碼:

class DefaultController extends Controller 
{ 
    public function displayTimelineAction(Request $request) 
    { 
     $content = null; 
     return $this->render('default/timeline.html.twig', $content); 
    } 
} 
+0

將displayTimeline更改爲控制器中的displayTimelineAction。 – Cerad

+0

否定的。同樣的問題:( –

+1

Action後綴被添加到控制器方法中,不是渲染函數,也許查看路由章節,看看映射是如何工作的Lot's of magic – Cerad

回答

1

CERAD是正確的 - 更具體的修復是改變模板:

{{ render(controller('CompanyBundle:Default:displayTimeline')) }} 

和控制器來:

class DefaultController extends Controller 
{ 
    public function displayTimelineAction(Request $request) 
    { 
     $content = array(); 
     return $this->render('CompanyBundle:Default:timeline.html.twig', $content); 
    } 
}