2013-07-19 49 views
1

我目前得到一個非常有線樹枝例外:Symfony的2 - 樹枝缺少強制參數異常延伸

如果我用小樹枝{% extends 'some:template' %},我得到下面的樹枝例外:

An exception has been thrown during the rendering of a template ("The "_projectView" route has some missing mandatory parameters ("id").") in "xy:Project:view.html.twig". 

但如果我刪除{% extends 'some:template' %},模板顯示正確 - 這爲我的部分排除了路由或控制器的任何問題,它必須是模板的問題,但我無法弄清楚。在父模板中不使用變量。

+0

爲什麼要擴展''?該函數需要一個字符串。如果您不想擴展另一個模板,請不要添加擴展標籤。或者這僅僅是爲了示範目的? – UrGuardian4ngel

+0

是的不好的選擇......在我的實際實現中,當然有一個有效的模板路徑,我只是將它留在示例中。 – wowpatrick

回答

7

在你試圖擴展的模板裏面,你試圖從路由'_projectView'中生成一個url,但是你沒有提供所有必要的參數。

無論是在您的模板添加一個默認的ID,以你的路線......

route_name: 
    pattern: /whatever/{id} 
    defaults: { id: 1 } 

...或做這樣的事情:

{{ path('route', { 'id' : entity.id|default('1') }) }} 
+0

謝謝你的回答!只需確認:如果是這種情況,那麼擴展給定模板的每個頁面都應顯示相同的異常?有趣的是,我只在__only__上得到了路由指向的'視圖'模板上的錯誤。鏈接到包含一個路徑的「視圖」頁面的頁面就像您提到的那樣工作得很好...... – wowpatrick

1

很簡單,正確地顯示,每個枝杈需要定義它需要的所有變量。它們要麼在URL中要麼傳遞給渲染函數。如果這些變量中的任何一個都丟失了,那麼Symfony會拋出這個錯誤。

鑑於你所說的在我看來,你正在擴展的樹枝有一個它想要的變量。在所有其他地方你已經擴展了這個樹枝,你已經提供了這個變量既可以在URL中,也可以在其中一個父樹枝中提供,所以它沒有投訴。在這種情況下,您嘗試使用它並且缺少該變量。所以它抱怨。

檢查以確保您的路徑通過正確的變量或您的控制器將正確的變量傳遞給渲染函數。