コントローラー(Controller)を利用する (3/5)
作成:2015-08-22 09:55
更新:2015-08-22 09:55
更新:2015-08-22 09:55
■レイアウトのON/OFF
今回、作成したクラスには「index」というメソッドがあります。これが、アクションメソッドです。
このメソッドでは、基本的にechoを実行しているだけですね。アクションでは、echoしたものがそのままサーバーからクライアント側へ出力されます。つまり、ここでechoした内容がそのままWebブラウザで表示される、と考えていいでしょう。
が、echoの他に、ちょっと見慣れない文が最初に書かれています。この部分です。
$thisは、このクラス(HeloController)のインスタンスです。CakePHPでは、Webアプリケーションが実行されると、アクセスされたアドレスに対応するコントローラーのインスタンスが自動的に作成され、そのインスタンスのメソッドが呼び出されます。この$thisは、こうしてフレームワークによって生成されたインスタンスを示しています。
ここでは、「autoRender」というプロパティの値をfalseに設定しています。このautoRenderは、ページを自動的にレンダリングしレイアウトする機能の設定です。
CakePHPでは、あらかじめ用意しておいたテンプレートを元に、自動的にページをレンダリングします。こうすることで、複数の頁があってもすべて同じデザインで表示されるようにしているのです。
ここでは、まだレイアウト用のテンプレートも用意してませんので、この自動レンダリング機能を使わず、すべてアクション内でページを作成するようにしています。そのため、autoRenderをfalseに変更していたのですね。
このメソッドでは、基本的にechoを実行しているだけですね。アクションでは、echoしたものがそのままサーバーからクライアント側へ出力されます。つまり、ここでechoした内容がそのままWebブラウザで表示される、と考えていいでしょう。
が、echoの他に、ちょっと見慣れない文が最初に書かれています。この部分です。
$this->autoRender = false;
$thisは、このクラス(HeloController)のインスタンスです。CakePHPでは、Webアプリケーションが実行されると、アクセスされたアドレスに対応するコントローラーのインスタンスが自動的に作成され、そのインスタンスのメソッドが呼び出されます。この$thisは、こうしてフレームワークによって生成されたインスタンスを示しています。
ここでは、「autoRender」というプロパティの値をfalseに設定しています。このautoRenderは、ページを自動的にレンダリングしレイアウトする機能の設定です。
CakePHPでは、あらかじめ用意しておいたテンプレートを元に、自動的にページをレンダリングします。こうすることで、複数の頁があってもすべて同じデザインで表示されるようにしているのです。
ここでは、まだレイアウト用のテンプレートも用意してませんので、この自動レンダリング機能を使わず、すべてアクション内でページを作成するようにしています。そのため、autoRenderをfalseに変更していたのですね。
(by. SYODA-Tuyano.)
※プログラムリストが表示されない場合
AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。
●プログラム・リスト●
<?php namespace App\Controller; use App\Controller\AppController; class HeloController extends AppController { public function index() { $this->autoRender = false; echo "<html><head></head><body>"; echo "<h1>Hello!</h1>"; echo "<p>これは、サンプルで作成したページです。</p>"; echo "</body></html>"; } }
※関連コンテンツ
「初心者のためのCakePHP3 プログラミング入門」に戻る