2013-10-11 13 views
8

誰も私にCakePhP 2.0で 'view block'を使う方法を教えてもらえますか?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"); 
どんなにあなたがあなたのブロックを定義したり、あなたがそれを上書きするとき...あなたの他の要素内のすべての時間はあなたがの$ this - を行うことができます>起動しない(「block_name ")または$ this-> append(" block_name ")... cakephpはあなたのすべての操作をそのブロックに「マージ」し、適切な場所に配置します(レイアウトで定義します)...

例ブロックを使用する...あなたのレイアウトのヘッダーにCSSの1ブロックを、フッターのJavaScriptブロックを想像してみてください...特定の機能のための特定のCSSやjavascriptがあればブロックとあなたが...あなたの生成されたHTMLの真ん中に

をスクリプトやCSSを持っていない私はあなたが

関連する問題