2010-12-06 75 views
2

目前在我的symfony應用程序我創建了一個模塊標題,然後頭組件來處理模板我的頭部分,同爲軀,的最佳方式包括頁腳,頭部和側面菜單中的Symfony

是這個最好的方式去?

此外,我有些不確定如何處理某些部分包含的側邊菜單,應該如何創建我的類別模塊的組件側邊菜單並使用插槽來完成此操作?

回答

2

部分可能是最好的方法。

但是,如果想要放入佈局的插槽僅適用於某些操作而不是全部,則插槽非常有用。

你說你已經爲頁眉和頁腳創建了一個模塊。我更願意在每個應用程序模板文件夾中創建一個部分。

/apps 
    /yourapp 
    /templates 
     _header.php 
     _footer.php 
     layout.php 

類別欄聽起來像一個組成部分,但它是如何在實現取決於是否要在每一頁上顯示的相同部件或能夠控制所顯示的側邊欄(如果有的話),在不同的頁面。

如果你想在每個頁面上使用相同的組件,只需在你的layout.php文件中包含組件(包含include_component)。如果您想要更多的控制權,請將您要求顯示的每個操作的模板添加到組件中。

如果設置了特定屬性,則更復雜的側邊欄解決方案將從佈局中包含它。所以,在你的actions.class.php:

public function preExecute() 
{ 
    $this->getRequest()->setAttribute('show_categories_sidebar', true); 
} 

然後在你layout.php中:

<?php if ($sf_request->hasAttribute('show_categories_sidebar')): ?> 
    <div id="sidebar"> 
    <?php include_component('category', 'sidebar') ?> 
    </div> 
<?php endif; ?> 
1

我通常會將頁眉和頁腳部分或組件放在默認模塊中。然後我通過插槽將它們包含在佈局中,讓其他操作可以覆蓋或禁用它們。因此,一個簡單的佈局可能是這樣的:

<body> 
    <?php if (has_slot('header')): ?> 
    <?php include_slot('header') ?> 
    <?php else: ?> 
    <?php include_component('default', 'header') ?> 
    <?php endif ?> 
    <?php echo $sf_content ?> 
    <?php if (has_slot('footer')): ?> 
    <?php include_slot('footer') ?> 
    <?php else: ?> 
    <?php include_partial('default/footer') ?> 
    <?php endif ?> 
</body> 

您現在可以覆蓋上每一個動作/模板基礎頁眉/頁腳,以及完全由插槽設置爲false禁用它們的能力。類似的委託人可以用於側面菜單。

+0

出於好奇,爲什麼你有不同的代碼爲頁眉和頁腳的其他塊(分量VS部分)? – 2010-12-06 15:43:56

+0

只是爲了展示兩種不同的做法。如果你需要做屬於Controller層的事情,你只會使用一個組件。 – 2010-12-08 04:29:59

相關問題