我会把我的导航栏控制器,我会使用查询从我的数据库中获得一个变量。我没有控制器,我用这种方式创建它:
<?php
namespace Dt'EcBundle'Controller;
use Symfony'Bundle'FrameworkBundle'Controller'Controller;
use Symfony'Component'HttpFoundation'Request;
class NavbarController extends Controller {
public function navbarAction(Request $request) {
$prova = "ciao";
return $this->render('DtEcBundle:Header:navbar.html.twig',array(
"prova" => $prova,
));
}
}
现在我把渲染控制器放在:{# app/Resources/views/base.html的主体中。树枝#} "
{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}
我遵循这个,但我不理解错误:"http://symfony.com/doc/current/book/templating.html#embedding-controllers"
我得到这个错误变量"prova"不存在于DtEcBundle:Header:navbar.html。twig在第5行,但如果我写代码在navbar.html.twig给我等于错误…如果我删除变量,只写
{{ render(controller('DtEcBundle:Navbar:navbar')) }}
给我一个服务器错误号码500o .o..我怎么能只在navbar.html.twig中使用我的控制器??
navbarAction不接受prova变量作为参数,那么为什么要在基模板中传递它呢?
我认为action应该从db中获取这些数据。
在这种情况下,使用:
{{ render(controller('DtEcBundle:Navbar:navbar')) }}
似乎没有问题,错误在别处。
如果你得到一个500,检查日志告诉我们到底是什么错了。
格式化你的代码,它几乎是不可读的
错误代码:
{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}
在twig中不存在prova变量,控制器正常。如果你想把变量从twig放到控制器:
/**
* @Route("/prova/{prova}", name="prova")
*/
public function navbarAction(Request $request,$prova) {
return $this->render('DtEcBundle:Header:navbar.html.twig',array(
"prova" => $prova,
));
}
与
{% set prova = 'foo' %}
{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}