Symfony2控制器导航栏

时间:2015-10-16 08:13:29

标签: php symfony controller twig 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,

    ));
    }
 }

现在我将渲染控制器放在:&#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中使用我的控制器?

2 个答案:

答案 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,检查日志告诉我们究竟是什么错误。

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