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.twig #}

{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}

我遵循这个但我不明白错误:“http://symfony.com/doc/current/book/templating.html#embedding-controllers

我收到此错误 变量 "prova" 在第 5 行 DtEcBundle:Header:navbar.html.twig 中不存在 但如果我将代码写入navbar.html.twig 给我等于错误.. 如果我删除变量并且只写

{{ render(controller('DtEcBundle:Navbar:navbar')) }}

给我一个服务器错误号 500 o.o.. 我该怎么做才能仅在导航栏中使用我的控制器。html.twig??

错误代码为:

{{ render(controller('DtEcBundle:Navbar:navbar', { 'prova': prova })) }}

twig 中不存在 prova 变量,控制器没问题。 我如果你想把 var 从树枝到控制器:

 /**
 * @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 })) }}

navbarAction 不将 prova 变量作为参数,那你为什么要在基本模板中传递它?

我认为该操作应该从数据库中获取这些数据。

在那种情况下,使用:

{{ render(controller('DtEcBundle:Navbar:navbar')) }}

好像没问题,其他地方出错了

如果您得到 500,请检查日志以告诉我们到底出了什么问题。

并格式化你的代码,它几乎不可读。