我让它变得更简单(为我留在底部的复杂问题道歉)。
我想让一个树枝模板将另一个控制器作为子部分呈现。
这是父树枝(Resources/views/Default/testRenderParent.html.twig):
<p>Look! I am your father!</p>
<p>But look, I am not your
{{ render(controller("SarelTestBundle:Default:testRenderChild")) }}</p>
这是子树枝(Resources/views/Default/testRenderChild.html.twig):
KID
控制器(Controller/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 运行此程序时(注意“父”部分),您应该得到回显:
看!我是你的爸爸!
但是看,我是你的孩子
但是,相反,您会得到回显,并在其下方显示错误:
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
看!我是你的爸爸!
但是看,我不是你的
FatalErrorException:错误:达到了“250”的最大函数嵌套级别,正在中止!在 /Users/sarel/www/playpen/app/cache/dev/classes.php 行 6134
因此你可以看到,它正在渲染“看!我是你的父亲!但是看,我是你的”......然后它不是用树枝模板渲染子控制器,而是重新渲染父控制器,以无限循环结束,被异常逮捕。
--- 修改前复制 ---
--- 修改前复制 ---
--- 修改前复制 ---
因此,我尝试使用在此处输入链接描述中的指南在我的 symfony2 项目中嵌入一个控制器(以及最终操作呈现的模板) 。
我的控制器定义如下:
<?php
namespace OTS\CoreBundle\Controller;
/**
* @Template()
*/
class EmergencyContactsController extends Controller
{
public function addEmergencyContactAction(Request $request, $id) {
return array();
}
}
我有一个附加的树枝模板,它现在只有一个名为 addEmergencyContact.html.twig 的树枝文件形式的“hello world”。
当我为此访问 URL 时,它类似于 localhost/my_route_to_it 它工作得非常好,我在屏幕上看到“hello world”。
现在,根据这个,我只需要输入以下 twig 命令:
{{ render(controller('OTSCoreBundle:EmergencyContacts:addEmergencyContact', {'id': 15})) }}
当我这样做并加载hold-route时,它似乎正在尝试加载主路由,然后在渲染子路由的位置再次加载主路由。我知道这一点是因为它告诉我缺少变量——我只在主树枝文件中使用的变量。
然而,当我:
- 那里没有 {{ render... }},它工作正常 - 即不是其他代码给了我缺少变量的例外
- 只渲染子路由我得到了一个不错的“hello world”——也就是说,有问题的不是子树枝或子控制器