CakePHP3のControllerでHello Worldを表示する。

CakePHP3をインストールしたあと、ControllerでHello Worldを表示してみる。
まずは、bakeでControllerを作成する。

$ bin/cake bake controller hello

src/Controller/HelloController.phpが作成される。

HelloControllerのindex()を以下の様に記載する。


public function index()
{
    echo 'Hello World.';
}

さらに、config/routes.phpでルートを設定する。


Router::scope('/', function (RouteBuilder $routes) {
    $routes->connect('/hello', ['controller' => 'Hello', 'action' => 'index']);

これで、http://hostname:port/helloにアクセスするとMissing Templateエラーが発生する。
src/Template/Hello/index.ctpがないからエラーになるようだ。

調べると、CakePHP3のControllerドキュメントに以下の記載がある。

CakePHP は ($this->autoRender に false をセットしない限り) アクションの後に 自動的に描画メソッドを呼び出します

なので、HelloControllerのindex()の中を修正する。


public function index()
{
    $this->autoRender = false;
    echo 'Hello World.';
}

再度、アクセスすると、今度はHello World.が表示できた。

コメント

タイトルとURLをコピーしました