StackOverflow мой дом :-)Symfony2 Циклическая ссылка
Возможно у меня есть проблемы с петлей в шаблоне (или я идиот ;-)).
services:
twig_menu:
class: Cms\PageBundle\Twig\Menu
arguments: ['@doctrine.orm.entity_manager', "@templating"]
код PHP:
namespace Cms\PageBundle\Twig;
use Doctrine\ORM\EntityManager;
use Symfony\Component\Templating\EngineInterface;
class Menu {
protected $em, $templating;
public function __construct(EntityManager $em, EngineInterface $templating){
$this->em = $em;
$this->templating=$templating;
}
public function show($typ){
$menu=$this->em->getRepository("CmsAdminBundle:Menu")->findBy(array('type_id'=>$typ));
return $this->templating->render("menu.html.twig", array('links'=>$menu));
}
}
шаблона:
<ul>
{% for link in links %}
<li><a href="{{ link.href }}">{{ link.name }}</a></li>
{% endfor %}
</ul>
Когда я очистил кэш на 1 обновления в порядке, то есть ошибка:
Circular reference detected for service "templating", path: "templating -> twig -> twig_menu".
Я не знаю, как это исправить. Я хотел бы создать «глобальную функцию», которая в аргументах имеет TYPE_ID и показывает это меню. ''. Я не хочу «локально» на странице контроллера, создаю меню. Это глупо. – viko
Похоже, вы хотите зарегистрировать функцию Twig, которая позволит вам сделать что-то вроде '{{show_menu (1)}}'. Кроме того, вы можете использовать прослушиватель, чтобы ваш шаблон имел что-то вроде '
', а затем слушатель получил всю отображаемую страницу и вводил HTML в этот div. Это примерно так, как добавляет панель веб-отладки - она использует 'str_replace' для замены'