我已經簡化了它(對於我在底部留下的複雜問題的道歉)。使用樹枝的嵌入控制器
我想要一個樹枝模板渲染另一個控制器作爲子部分。
這裏的父樹枝(資源/視圖/默認/ testRenderParent.html.twig):
<p>Look! I am your father!</p>
<p>But look, I am not your
{{ render(controller("SarelTestBundle:Default:testRenderChild")) }}</p>
這裏的孩子樹枝(資源/視圖/默認/ testRenderChild.html.twig):
KID
控制器(控制器/ DefaultController.php):
<?php
namespace Sarel\Test\TestBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
/**
* @Template()
**/
class DefaultController extends Controller
{
/**
* @Route("/testRenderParent")
*/
public function testRenderParentAction()
{
return array();
}
/**
* @Route("/testRenderChild")
*/
public function testRenderChildAction() {
return array();
}
}
當運行此,用下面的URL/testRenderChild你應該得到「KID」的迴應。 當你使用URL/testRenderParent(注意「Parent」部分)運行這個時,你應該得到迴應:
看!我是你爸爸!
但是你看,我是你的孩子
但是,而是你得到這個迴盪,和它下面的錯誤:
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
看!我是你爸爸!
但是看,我不是你的
FatalErrorException:錯誤:達到'250'的最大功能嵌套級別,中止!在/Users/sarel/www/playpen/app/cache/dev/classes.php線6134
因此,你可以看到,它的渲染「看!我是你爸爸!但是你看,我是你的」 .. 。然後,而不是使用它的樹枝模板呈現子控制器,它將重新呈現父級,以無盡循環結束,並由異常捕獲。
---複製之前,我改變了它---
---複製之前,我改變了它---
---複製之前,我改變了它---
所以我m試圖在我的symfony2項目中使用enter link description here中的指導原則嵌入控制器(最後是動作呈現的模板)。
我的控制器定義如下:
<?php
namespace OTS\CoreBundle\Controller;
/**
* @Template()
*/
class EmergencyContactsController extends Controller
{
public function addEmergencyContactAction(Request $request, $id) {
return array();
}
}
我必須附加到一個樹枝模板,它現在只是「世界你好」在名爲addEmergencyContact.html.twig樹枝文件的形式。
當我去到這個URL,這是類似localhost/my_route_to_it它工作得很好,我看到在屏幕上的「你好世界」。現在
,根據this我僅僅需要把下面的樹枝命令:
{{ render(controller('OTSCoreBundle:EmergencyContacts:addEmergencyContact', {'id': 15})) }}
當我這樣做,我加載它似乎是試圖加載的主要途徑,保持路線,和然後在我渲染子路線的地方再次加載主路線。我知道這是因爲它告訴我缺少變量 - 我只在主分枝文件中使用的變量。
然而,當我:
- 不具備{{渲染...}}在那裏,它工作正常 - 也就是說,它並不是說竟然放棄了我丟失的變量 外其他代碼
- 只呈現孩子的路線我得到一個不錯的「你好世界」回來 - 即它不是孩子的小枝或兒童控制器的越野車
這是一個有點不清楚你的問題是什麼? – cheesemacfly
@cheesemacfly對不起,我已經澄清了,我也解決了它在爲它組合一個不錯的沙箱之後。它是與控制器關聯的@Template(),而不是SensioFrameworkExtraBundle提供的各個動作。 – Sarel