Symfony2控制器导航栏


Symfony2 controller navbar

我会把我的导航栏控制器,我会使用查询从我的数据库中获得一个变量。我没有控制器,我用这种方式创建它:

<?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 })) }}