2013-10-11 106 views
8

任何人都可以向我解釋如何在CakePhP 2.0中使用'視圖塊'?Cake PhP塊 - 如何使用它們?

我已經閱讀了cakephp網站上的文檔,但是對於初學者用戶來說卻錯失了很多......例如,我需要哪些文件,在代碼中如何調用塊,代碼塊是否需要自己的文件夾/控制器/模型/視圖等?我真的迷路了!

如果有人能夠從頭到尾地解釋如何使用塊作爲一個側欄,這將是一件好事。

這個例子是我有一個側邊欄,我想在不同的頁面上使用,但是我想把側邊欄分成不同的元素以便在塊內調用,例如,

<div class="heading1"> 
    <h2>Heading 1</h2> 
</div> 
<div class="ul-list1"> 
<ul> 
<li>list item 1</li> 
<li>list item 2</li> 
</ul> 
</div> 
<div class="heading2"> 
    <h2>Heading 2</h2> 
</div> 
<div class="ul-list1"> 
<ul> 
<li>list item 3</li> 
<li>list item 4</li> 
</ul> 
</div> 

所以在打破這兩個元素(標題1和標題2)

我將如何編寫代碼塊,哪里哪里我插入此代碼,我需要什麼樣的頁面? (請將此目標對準新手CakePhP用戶,因爲我對此非常困惑!)

+0

我仍然停留在這一點 - 我真的需要這個回答從視圖的角度完成新手!寫什麼代碼,在哪裏放置代碼,在哪些頁面中,如何調用這些代碼?如何使用元素等...? –

回答

1

您可以在您的視圖或元素中使用以下代碼。

// for start the block code 
$this->start('block_name'); 

// your html code will goes here, even you can also specify the element reference. 

$this->end(); // close the block. 

,並在你的佈局,你可以獲取/顯示視圖塊代碼

echo $this->fetch('block_name'); // anywhere in the layout. 

確保您所指定的視野和佈局相同的塊名。

+0

這是我不明白的一點。如果我將HTML添加到視圖中,我希望看到它像第一部分所說的那樣,那麼塊中的點數據是如何獲取的?如果我在元素中使用塊代碼,那麼我在哪裏放置它?你能真正專注於什麼地方,在什麼文件夾等請,因爲我仍然困惑? –

+0

如果您在元素中添加了塊代碼,那麼您可以在'$ this-> start('block_name');'和'$ this-> end();'視圖中添加該元素。 –

+0

我如何「即使你也可以指定元素參考」? –

4

您應該創建一個像下面這樣的元素。

// app/views/elements/headings.ctp 
<?php $this->start('heading1'); ?> 
<div class="heading1"> 
    <h2>Heading 1</h2> 
</div> 
<div class="ul-list1"> 
    <ul> 
     <li>list item 1</li> 
     <li>list item 2</li> 
    </ul> 
</div> 
<?php $this->end(); ?> 


<?php $this->start('heading2'); ?> 
<div class="heading2"> 
    <h2>Heading 2</h2> 
</div> 

<div class="ul-list1"> 
    <ul> 
     <li>list item 3</li> 
     <li>list item 4</li> 
    </ul> 
</div> 
<?php $this->end(); ?> 
// end element file 

// include the element first before getting block in the views or layout file. 
<?php 
    echo $this->element('headings'); 
?> 

// after that you will able to display block anywhere inside view files or layout also with following statements. 

<?php 
    // for heading first 
    echo $this->fetch('heading1'); 

    // for heading second. 
    echo $this->fetch('heading2'); 
?> 
+0

嗨,羅伯特,如果您還有任何問題,請隨時發表評論。 –

+0

我仍然沒有得到什麼比只使用幾個元素的優勢。我很確定你可以用塊做很棒的事情,但是我沒有想到任何無法用元素更容易完成的事情,也沒有更少的代碼行。 – devius

0

在你的佈局或元素,當你這樣做:

 
    $this->fetch ("block_name"); 
無論何時你定義你的塊或重寫它...你其他的元素,每次你能做到這 - $>開始(「block_name 「)或者$ this-> append(」block_name「)... cakephp會將您的所有操作」合併「到該塊,並將它們放在適當的位置(在您的佈局中定義)...

一個示例使用塊...想象您的佈局和JavaScript塊在您的頁腳的標題中的一塊CSS ...如果有特定的CSS或JavaScript的特定功能,他們將被添加到該塊,你會不會有腳本和CSS在你生成html的中間...

我希望能夠幫助您