在symfony cmf中,我想创建以下内容:
如果用户点击里面的菜单,则应显示静态内容中的所有项目,其中包含insideBlock的父项
我没弄明白该怎么做。 当然我不喜欢只为内部编程一个函数,因为我希望其他菜单的行为方式相同。
我可以将菜单项链接到静态内容并显示此单个内容,但是一旦我选择容器块,菜单项就会消失......
修改
我做到了:
在我的控制器中添加如下函数:
/**
* @Route("/{_locale}/empfang", name="empfang_display_all")
*/
public function empfangAction(Request $request)
{
$documentManager = $this->get('doctrine_phpcr')->getManager();
$content = $documentManager->find(null, '/cms/content/empfangsgebiet');
return $this->render('empfang/empfang.html.twig', [
'contents' => $content
]);
}
``{%set index = 0%}
{% for child in children %}
{% if (child.name != "banner") and (isInstanceof(child, 'ContainerBlock') == false) %}
<div class="{{ cycle(section1, index) }}">
<div class="container">
<div class="row">
<div class="col-xs-12">
<div class="top-title">
<div class="row">
<div class="col-sm-10 col-sm-offset-1">
{% if isInstanceof(child, 'DemoSeoContent') %}
{{ child.body|raw }}
{% else %}
{{ sonata_block_render({ 'name': child.id }) }}
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
{% set index = index + 1 %}
{% endif %}
{% endfor%}
我现在希望以下一行更具动态性
$content = $documentManager->find(null, '/cms/content/empfangsgebiet');
我更喜欢这样:
/**
* @Route("/{_locale}/empfang/{path}", name="empfang_display_all")
*/
public function empfangAction(Request $request, $path)
{
$content = $documentManager->find(null, $path);
}
答案 0 :(得分:0)
块不是可路由的项目,这意味着它们不能拥有自己的URL。我认为最好的方法是使用普通页面而不是容器块,并配置该页面的路由以使用特殊模板。然后你编写一个模板,输出页面的标题,也许文本作为“引导”,然后循环遍历页面的子项并输出。