我会为我的导航栏放置一个控制器,我会使用查询从我的数据库中获取变量.. 我没有控制器,我以这种方式创建它:
<?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,
));
}
}
现在我将渲染控制器放在:&#34; {#app / Resources / views / base.html.twig#} &#34;
{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}
我遵循这一点,但我不明白错误:&#34; http://symfony.com/doc/current/book/templating.html#embedding-controllers&#34;
我收到此错误变量&#34; prova&#34; DtEcBundle中不存在:Header:第5行的navbar.html.twig ,但如果我在navbar.html.twig中编写代码,请给我等于错误.. 如果我删除变量,我只写
{{ render(controller('DtEcBundle:Navbar:navbar')) }}
给我一个服务器错误号500 o.o .. 我怎样才能在navbar.html.twig中使用我的控制器?
答案 0 :(得分:0)
错误是代码:
{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}
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 })) }}
答案 1 :(得分:0)
navbarAction不会将prova变量作为参数,那么为什么要在基础模板中传递它呢?
我认为该操作应该从db获取这些数据。
在这种情况下,使用:
{{ render(controller('DtEcBundle:Navbar:navbar')) }}
似乎没问题,错误就在其他地方。
如果你得到500,检查日志告诉我们究竟是什么错误。
格式化你的代码,它几乎不可读。