CakePHPではビューブロックと呼ばれるひとかたまりのブロックを定義することで自由な場所にそのブロックをレイアウトすることができます。
例えばsidebarブロックを作るには次のようにビュー/レイアウトで
$this->start(“sidebar”); と $this->end(); でブロックの中身を囲います。
$this->start('sidebar'); echo $this->element('sidebar/recent_topics'); echo $this->element('sidebar/recent_comments'); $this->end();
このブロックを表示したいところで $this->fetch(“sidebar”); を使います。fetchはブロックが存在しなかった場合は ”” を返してブロックを出力します。
<?= $this->fetch('sidebar') ?>
第2引数にブロックが存在しなかった場合のデフォルト値も設定できます
<div class="shopping-cart"> <h3>買い物かご</h3> <?= $this->fetch('cart', '買い物かごが空です') ?> </div>
Htmlヘルパーはビューブロックと結び付いており、script() 、 css() などのメソッドは block = true のオプションで使われると 同名のブロックをそれぞれ更新します。
<?php $this->Html->script('carousel', ['block' => true]); $this->Html->css('carousel', ['block' => true]); ?> <!DOCTYPE html> <html lang="en"> <head> <title><?= $this->fetch('title') ?></title> <?= $this->fetch('script') ?> <?= $this->fetch('css') ?> </head>
$this->fetch(‘content’) などをうまく使うことでかんたんにレイアウトを実装することが出来ます。
他にもappend() を使ってブロックに追記したり、reset() メソッドでいつでもブロックを消去または上書きしたり、prepend() メソッドで既存のブロックの先頭にコンテンツを追記したりなどすることも出来ます。詳しい説明は公式サイト公式サイトでご覧ください