2015-10-16 4 views
0

я бы поставил контроллер для моей навигационной панели, и я хотел бы использовать запрос, чтобы получить переменную из моей базы данных .. У меня нет контроллера и я создать его таким образом:Symfony2 контроллер 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, 

    )); 
    } 
} 

Теперь я кладу вынести контроллер в теле: «{# приложение/ресурсы/Views/base.html.twig #}»

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

Я следую за это, но я не т понять ошибку: "http://symfony.com/doc/current/book/templating.html#embedding-controllers"

я получаю эту ошибку Variable «Prova» не существует в DtEcBundle: Заголовок: navbar.html.twig в строке 5 но если я пишу код в navbar.html.twig дать мне равно ошибка .. , если я удалить переменную и я пишу только

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

Дайте мне номер ошибки сервера 500 оо. Как я могу сделать для моего контроллера только в navbar.html.twig ??

+0

Это 'navbar.html.twig' содержимое примерно так: {{prova}} – scoolnico

+0

Давайте продолжим обсуждение в чате (http://chat.stackoverflow.com/rooms/92468/discussion-between- scoolnico-и-Luca-м). – scoolnico

ответ

0

navbarAction не принимает Prova переменную в качестве параметра, так почему вы пропуская его там в базовый шаблон?

Я думаю, что действие должно извлекать эти данные из db.

В этом случае с помощью:

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

, кажется, нормально, и ошибка где-то в другом месте.

Если вы получаете 500, проверьте журналы, чтобы сообщить нам, что именно неправильно.

И отформатируйте свой код, он едва читается.

0

Ошибка код:

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

переменная Prova не существует в прута, контроллер отлично. I, если вы хотите поставить вар с веткой к контроллеру:

/** 
* @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 })) }} 
Смежные вопросы