2016-04-21 111 views
0

裏面我有一個樹枝調用循環多重渲染控制器樹枝

render(controller('Bundle:Controller:Method', { option: 'option' })) 

16倍。它的工作原理與預期的一樣,但問題在於它會大幅影響PHP內存使用情況,因爲symfony首次嘗試加載工具欄的嘗試返回404錯誤,但在嘗試幾次嘗試找到並加載工具欄後。

我在網上看到過使用渲染控制器再次調用symfony工作流(在我的例子中是16次)。 所以我的問題是以下內容:是否有一個替代渲染控制器的內存較少?

解決方案必須能夠調用少量服務並返回帶有參數的Response對象。

+0

而不是讓Twig調用controller-Action 16次,試着直接從最初的action調用它並將結果交給twig。 –

+0

這是個好主意,但在我的情況下,使用這種解決方案將會非常複雜,我會保留這個作爲最後的手段 –

+0

而不是使用渲染,請調用樹枝擴展。 http://symfony.com/doc/current/cookbook/templating/twig_extension.html Render對於它的用途很棒,但正如你發現的那樣,濫用它可能會導致嚴重的性能問題。 – Cerad

回答

0

既然你沒有提供關於爲什麼你需要這樣做的很多信息,他們我只是可以給你一些不好的想法。

最好的解決方案就像@ emanuel-oster說的,在呈現視圖之前獲取所有信息。如果你不能,因爲強迫他們在樹枝上做,他們也許可以選擇先循環,用對象id創建一個新的變量,或者讓你用這個信息調用控制器一次,做一個單一的電話他們。

如果這不是一個選項,他們我只是想在設法加載一些Ajax請求,因爲Ajax調用是異步的,你可以有更好的用戶體驗。也許顯示一些等待組件,完成所有請求,並在每個響應出現時渲染所有組件。

希望這可以幫助你。

+0

ajax部分是非常有趣的,我沒有想過它,因爲我想使用樹枝如此糟糕,它實際上可以做的伎倆,謝謝 –