【CakePHP入門】render()メソッドで任意のViewファイルを指定する

こんにちは!フリーエンジニアのヤマシタです。

Viewで描画を行うときに、処理によっては別のViewファイルを指定したい場合もあります。

この記事では、

・renderメソッドとは
・renderメソッドで引数を指定しない場合
・renderメソッドで引数を指定した場合
・renderメソッドの注意点

などのrenderメソッドの使い方に関して解説していきます。

renderメソッドは、別のViewファイルを描画したいときに非常に便利です。

ここではそんなrenderメソッドの使い方について、分かりやすく解説します!

renderメソッドとは

Controller::render()メソッドは、各アクションの最後に自動的に呼ばれ、Viewを描画します。

CakePHPでは、$this->autoRenderにfalseを指定しない限り、Controllerのアクションの最後に自動的にViewが呼び出されます。

ここで、

「Controllerの最後で自動的にViewが呼び出されるならrenderメソッドは不要では?」

と疑問に思われる方もいるかもしれません。

しかし、処理によっては別のViewのファイル(ctp)を指定したいときもあります。

そのような場合はrenderメソッドを使用すると便利です。

renderメソッドは以下のように記述します。

引数にViewで描画するctpファイルを指定することで、そのファイルが呼び出されます。

renderメソッドの使い方

ここでは実際にrenderメソッドを使用してViewを呼出してみましょう。

引数を指定しない場合

以下はrenderメソッドで引数を指定しない場合のサンプルです。

引数を指定しない場合は、通常の規約どおりにViewファイルが呼び出されます。

src/Controller/SampleController.php

src/Template/Sample/index.ctp

このサンプルを実行すると、「src/Template/Sample/index.ctp」のViewファイルが描画されます。

実行結果:
render_image1

しかし、引数を指定しない場合はrenderメソッドを使用しなくても、Viewファイルが自動的に呼び出されます。

そのためrenderメソッドで引数を指定しないで使用することは、用途的には少ないと言えるでしょう。

引数を指定した場合

次にrenderメソッドに引数を指定したサンプルを紹介します。

以下のようにrenderメソッドに引数で別のctpファイルを指定します。

src/Controller/SampleController.php

引数に指定した「/Sample2/sample」は、src/Templateフォルダからの相対パスであるとみなします。

そのためViewファイルは「src/Template/Sample2/sample.ctp」に作成します。

sample.ctp

このサンプルを実行すると、Viewファイルはrenderメソッドで指定した「’/Sample2/sample’」が実行されます。

実行結果:
image2

renderメソッドの注意点

注意しておきたいのが、renderメソッドはsetメソッドで渡したデータを使ってViewを描画します。

そのため、先にrenderメソッドを指定すると以降の処理は実行されません。

<誤>

↑の処理ではrenderメソッドで処理が止まってしまい、setメソッドが実行されません。

Viewファイルで変数を参照しようとしても、変数が渡されていないため、未定義でエラーとなってしまうので注意しましょう。

正しくは以下のように記述します。

<正>

実際にサンプルを動かして動作の違いを確認してみましょう。


src/Controller/SampleController.php

sample.ctp

実行結果:

正しいパターンでの実行結果

確かに、sampleに値が受け渡されましたね!

まとめ

ここでは、Viewを描画するrenderメソッドについて、

・renderメソッドとは
・renderメソッドで引数を指定しない場合
・renderメソッドで引数を指定した場合
・renderメソッドの注意点

などについて解説しました。

renderメソッドは別のViewファイルを指定して描画を行いたいときに便利ですので、使い方はよく覚えておきましょう。

もし、render()メソッドの使い方を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

ヤマシタ

エンジニア歴10年のフリーランスエンジニア。ITに関わるさまざまなコンテンツの企画・制作も行っています。
ITに関してはノウハウ系、ライフハック系、トレンド系など、200本以上の執筆経験があります。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説