CakePHP2 でビューの基本 $autoRender と $autoLayout について勉強するよ♪だからコントローラーとビューだけでサンプル作るんです!モデルは、お休みっ!

スポンサードリンク


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; の場合

  • 画面の表示
    CakePHP- the rapid development php framework- Haskap.jpg
  • ページのソース
    こんにちはっ!ハスカップだよっ!<!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件の返信

コメントを残す