2016-10-29 17 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