CakePHP のアクションの基本と移動について調べたよ♪ | oki2a24 の続きの投稿となります。
ビューを使うための設定にかかわる二つのパラメータ、$autoRender と $autoLayout について調べました。
まとめ
- $autoRender ビューの使用有無の設定。これが false だと画面に何も表示されない。(コントローラーで無理矢理 echo すれば、それは表示されるが本来の使い方ではない)
- $autoLayout レイアウトの使用有無の設定。有効なら cake/sample/app/View/Layouts にあるレイアウトを使用する。$autoRender が true つまり有効となって初めて有効となる。
前提
- CakePHP 2.1.3 導入済み。
- ドキュメントルート/cake/sample/(ここにCakePHP が入ってます。app ディレクトリとか、.travis.yml ファイルとか。)
ソース
cake/sample/app/Controller/HaskapController.php
<?php class HaskapController extends AppController { // コントローラー名 public $name = 'Haskap'; // モデルを指定しない public $uses = null; // ビューの使用有無の設定 public $autoRender = false; // レイアウトの使用有無の設定 public $autoLayout = false; public function index() { echo "こんにちはっ!ハスカップだよっ!"; } } ?>
cake/sample/app/View/Haskap/index.ctp
<h1>サンプルのハスカップ見出し!</h1> <p>こんんちはっ!ハスカップの段落だよっ!</p> <p><?php echo date('Y/m/d', time()); ?></p>
動きを確認しておくと、HaskapController のアクションメソッド index を実行すると View フォルダにあるコントローラーに対応したフォルダ Haskap の中のアクションメソッド名に対応したファイル index.ctp をブラウザに表示します。
それでは、http://localhost/cake/sample/haskap/ にアクセスして実行結果を確認してきましょう。
$autoRender = false; $autoLayout = false; の場合
- 画面の表示
こんにちはっ!ハスカップだよっ! - ページのソース
こんにちはっ!ハスカップだよっ!
コントローラーの index アクションメソッドが実行されただけで、cake/sample/app/View/Haskap/index.ctp は一切動いていません。ビューは使用されていない、動いていないようです。
$autoRender = false; $autoLayout = true; の場合
先ほどの「$autoRender = false; $autoLayout = false; の場合の実行結果」とまったく同じ結果となりました。よって、$autoRender が false の場合は $autoLayout をどのような値にしても意味がない、ということが言えます。
$autoRender = true; $autoLayout = false; の場合
- 画面の表示
こんにちはっ!ハスカップだよっ!
サンプルのハスカップ見出し!こんんちはっ!ハスカップの段落だよっ!
2012/07/04 - ページのソース
こんにちはっ!ハスカップだよっ!<h1>サンプルのハスカップ見出し!</h1> <p>こんんちはっ!ハスカップの段落だよっ!</p> <p>2012/07/04</p>
今度はビューが使用され、 index.ctp の内容がページに出てきています。
ちなみに、コントローラーの index アクションメソッドの後に、ビューが動くようですね。
$autoRender = true; $autoLayout = true; の場合
- 画面の表示
- ページのソース
こんにちはっ!ハスカップだよっ!<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> CakePHP: the rapid development php framework: Haskap </title> <link href="/cake/sample/favicon.ico" type="image/x-icon" rel="icon" /><link href="/cake/sample/favicon.ico" type="image/x-icon" rel="shortcut icon" /><link rel="stylesheet" type="text/css" href="/cake/sample/css/cake.generic.css" /></head> <body> <div id="container"> <div id="header"> <h1><a href="http://cakephp.org">CakePHP: the rapid development php framework</a></h1> </div> <div id="content"> <h1>サンプルのハスカップ見出し!</h1> <p>こんんちはっ!ハスカップの段落だよっ!</p> <p>2012/07/04</p> </div> <div id="footer"> <a href="http://www.cakephp.org/" target="_blank"><img src="/cake/sample/img/cake.power.gif" alt="CakePHP: the rapid development php framework" border="0" /></a> </div> </div> </body> </html>
すごく HTML です!ビューが使用され、 index.ctp の内容がページに出てきているのに加え、ヘッダーやフッター、CSS の描写が追加されました。cake/sample/app/View/Layouts にあるレイアウト default.ctp から呼ばれ、default.ctp の一部分として、index.ctp が表示されています。
$autoRender も $autoLayout も両方コメント化、または削除した場合
なんと!「$autoRender = true; $autoLayout = true; の場合」と同じでした。なんだか、複雑な気持ちです。つまり、$autoRender と $autoLayout のデフォルト値は true なのですね。
おわりに
「コントローラーの index アクションメソッドの後に、ビューが動くようですね。」これは、覚えておくと、後々役に立つような気がします。なんとなくですけれども。
「CakePHP2 でビューの基本 $autoRender と $autoLayout について勉強するよ♪だからコントローラーとビューだけでサンプル作るんです!モデルは、お休みっ!」への2件の返信
[…] 投稿ナビゲーション ← 前へ […]
[…] ビュー機能 レイアウトを使用できるようにしたりできないようにするには、$autoRender と $autoLayout を設定する。 アクション内でも設定可能。リンクはこちら。 […]