【CakePHP】レイアウト(Layouts)の使い方
バージョン:CakePHP 2.x
レイアウトにはヘッダーやフッターなど、全てのビューで表示される部分を記述していきます。
デフォルトのレイアウトファイルは下記になります。
app/View/default.ctp
<?php /** * * PHP 5 * * CakePHP(tm) : Rapid Development Framework (http://cakephp.org) * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) * * Licensed under The MIT License * For full copyright and license information, please see the LICENSE.txt * Redistributions of files must retain the above copyright notice. * * @copyright Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org) * @link http://cakephp.org CakePHP(tm) Project * @package app.View.Layouts * @since CakePHP(tm) v 0.10.0.1076 * @license http://www.opensource.org/licenses/mit-license.php MIT License */ $cakeDescription = __d('cake_dev', 'CakePHP: the rapid development php framework'); ?> <!DOCTYPE html> <html> <head> <?php echo $this->Html->charset(); ?> <title> <?php echo $cakeDescription ?>: <?php echo $title_for_layout; ?> </title> <?php echo $this->Html->meta('icon'); echo $this->Html->css('cake.generic'); echo $this->fetch('meta'); echo $this->fetch('css'); echo $this->fetch('script'); ?> </head> <body> <div id="container"> <div id="header"> <h1><?php echo $this->Html->link($cakeDescription, 'http://cakephp.org'); ?></h1> </div> <div id="content"> <?php echo $this->Session->flash(); ?> <?php echo $this->fetch('content'); ?> </div> <div id="footer"> <?php echo $this->Html->link( $this->Html->image('cake.power.gif', array('alt' => $cakeDescription, 'border' => '0')), 'http://www.cakephp.org/', array('target' => '_blank', 'escape' => false) ); ?> </div> </div> <?php echo $this->element('sql_dump'); ?> </body> </html>
• $this->Html->charset()
メタタグの文字コードを定義します。「app/Config/core.php」の下記部分で設定を変更できます。
/** * Application wide charset encoding */ Configure::write('App.encoding', 'UTF-8');
• $this->fetch('content’)
この部分がViewファイルに記述したコンテンツが組み込まれる部分となります。
• $this->fetch('好きな名前’)
とすると、$this->assignで好きな値をセットすることができます。
たとえばレイアウトファイルに、
<title> <?php echo $this->fetch('description'); ?>|<?php echo $this->fetch('title'); ?> </title>
と記述すれば、
<?php $this->assign('description', 'これはテストサイトです'); $this->assign('title', 'トップページ'); ?>
とビューファイルで設定することができます。各々のページ違う情報を出す時に使えます。
また、
$this->assign('test', $this->element('element名'));
とすればelementを使う事ができます。