2016-10-29 21 views
0

在symfony中CMF我喜欢创建以下: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 
         ]); 
    } 
    
  • 加入作为路线菜单项empfang_display_all
  • 静态内容组父到容器
  • 在视图

``{%组索引= 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

嗨dbu,我这样做的同时。我创建了一个容器,将每个内容添加到这个容器,然后添加一个自定义路由的菜单项,在我的控制器中创建一个函数来显示这个特定容器的子项......但是当我添加一个带有子项的新菜单时,我将不得不再次创建一个自定义函数,我宁愿有一个通用函数来调用......但从菜单项中,我没有找到为这个路由名称添加参数......是否有可能这样做? – schurtertom

+0

您可以使用菜单属性中的routeParameters属性来调整路线。 – dbu

+0

但我建议创建一个“容器”文档,这是一种“页面”,以便可以有自己的路线。那么您只需创建这样一个容器页面,在url上定义url和自定义模板,然后添加块,并创建一个指向该容器页面的菜单项。 – dbu