2015-12-30 2 views
0

Я относительно новичок в Symfony и в настоящее время использую v 2.8. Я использую @Template аннотацию успешно, как это:Выбор пользовательского файла шаблона в контроллере Symfony

/** 
* @Route("/editleague/") 
* @Template() 
*/ 
public function editAction() { 
    return $array; 
} 

И что успешно делает шаблон прут на Bundle/Ресурсы/мнения/Default/edit.html.twig

Я решил, что я хочу различная реакция (не шаблон Twig), если запрос был пост, так что просто начать, я изменил приведенный выше код:

/** 
* @Route("/editleague/") 
*/ 
public function editAction() { 
    return $this->render("Default/edit.html.twig",$array); 
} 

Но я получаю ошибку 500. Я пробовал различные комбинации, но не получил ничего, чтобы работать, где я могу управлять визуализированным шаблоном в самой функции. Я считаю, что это простая проблема, что кто-то, у кого больше опыта, сможет разобраться в секундах.

+0

В вашем примере переменная '$ array' не определена (но это, вероятно, из-за плохого примера в вашем вопросе, верно?). Поэтому, пожалуйста, покажите, что журнал вашего приложения сообщает вам об ошибке и/или посещает его в среде dev, и расскажите нам, что там показано. – xabbuh

+0

Да, $ array определен, я просто оставил эту часть, чтобы сосредоточиться на частях, которые изменились между ними. Я не могу поверить, что забыл проверить режим разработки. Когда я это делаю, он говорит: Не удается найти шаблон «Default/edit.html.twig». Каким будет местоположение, я следовал (я думаю) той же идеей, что и на странице [symfony] (http://symfony.com/doc/current/book/controller.html#rendering-templates). –

+0

А, я понимаю. Просто взгляните на ответ @ Paulpro. – xabbuh

ответ

1

Поскольку ваш шаблон находится в каталоге ресурсов вашего комплекта, вы должны использовать логическое имя Symfony в вызове, чтобы сделать:

'AppBundle:Default:edit.html.twig' 

или:

':Default:edit.html.twig' 

See the difference между путями к шаблонам, хранящимся в набор в сравнении с шаблонами в вашем каталоге app.

+1

Чтобы предоставить дополнительный контекст: The Symfony Best Practice - это шаблоны для магазина под 'app/Resources/views'. Поэтому, когда в документации используется нечто вроде 'render ('Default/edit.html.twig')', шаблон ссылки будет искать в 'app/Resources/views/Default/edit.html.twig'. Однако, когда вы храните свои шаблоны в своем собственном пакете, вам нужно использовать синтаксис с именами, заданный @Paulpro. Итак, 'AppBundle: Default: edit.html.twig' переводит на' src/AppBundle/Resources/views/Default/edit.html.twig (фактическое местоположение может отличаться в зависимости от того, где находится ваш пакет). – xabbuh

+0

Хорошо ... похоже, что это исправлено для меня, и я лучше понимаю расположение шаблонов. Благодаря! Изменено значение «Default/edit.html.twig» на «Default/edit.html.twig» на «Bundle :: Default/edit.html.twig». –

Смежные вопросы