CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法
2019/09/28
CakePHP3でテンプレート、レイアウトのファイルを指定する方法
CakePHP3でテンプレートファイル(ctpファイル)を指定する方法
CakePHP3では、テンプレートファイル(ctpファイル)を指定しない場合は、デフォルト設定である現在のアクションと同じ名称のテンプレートファイルが読み込まれます。
例えば、「index」というアクションの場合は、「index.ctp」ファイルが読み込まれます。
ですが、アクション名と違うテンプレート名のファイルを利用したい場合や、レイアウトを変更したい場合は、テンプレートファイル名、レイアウト名を指定する必要があります。
具体的には以下のようになります。
|
1 2 3 4 5 6 7 |
public function index ( ) { : : $this->set(compact('name')); $this->set('_serialize', ['name']); $this -> render ( "find", "admin" ); } |
「$this -> render ( "find", "admin" );」のような記述を追加します。追加する場所は、処理の一番最後辺りがいいでしょう。
1つ目の引数がテンプレートファイル、2つ目の引数がレイアウトファイルになります。
記述するのは、ファイル名が「find.ctp」の場合は、「.ctp」を付けずに「find」のみを記述します。
記述する場所は、controllerの function内であれば問題ありませんので、一番最後に書いておくといいでしょう。
また、テンプレートファイルはそのままに、レイアウトファイルだけ変更したい場合は、「$this -> render ( null, "admin" );」のように、テンプレートファイルに「null」を指定します。
この記述方法は、CakePHP2の頃から変更がありません!
CakePHP3でテンプレート、レイアウトのファイルを使用しない場合の設定
上記は、テンプレート(View)や、レイアウトのファイルを指定する方法を説明しましたが、テンプレート(View)やレイアウトファイルを使用しないページもあるかと思います。
そのようなページで、テンプレート(View)やレイアウトファイルを使用しない設定の方法を解説します。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// レイアウト、テンプレート(View)の両方を無効にする場合 $this->render(false,false); // もしくは $this->layout = false; $this->autoRender = false; // レイアウトだけ無効にする場合 $this->render(null,false); // もしくは $this->layout = false; // テンプレート(View)ファイルだけ無効にする場合 $this->render(false); // もしくは $this->render(false,null); // もしくは $this->autoRender = false; |
ちなみに、「false」を指定しているところに「""」を記述すると、エラーになる箇所とならない個所がありました。
Ajaxでテンプレートを呼び出すときの注意点 2019.09.28 追記
レイアウトだけ無効にする方法として解説をしている、上記の
「$this->render(null,false);」
という記述方法は、正しく動作しない場合があるようです。
例えば、Ajaxの処理でレイアウトは必要なく、テンプレートのみ必要な場合は、
「$this->render(null,false);」
とすると、コントローラーからの変数の受け渡しがうまく行かないようです。
そのような場合は、
「$this->layout = false;」
の方を試してみてください。
CakePHP3の関連記事
CakePHPのpostlinkで生成した削除リンクをクリックしても処理が実行されない対処法CakePHP4のCSS、JavaScript、画像のブラウザへのキャッシュをコントロールする
CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
その他の「CakePHP3」に関する記事一覧
GoogleAdwords
GoogleAdwords
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!
関連記事
-
-
CakePHP3で値を入力直後にバリデーションする方法解説
CakePHP3でバリデーションの実行を保存する時から入力情報を受け取るときに変更する処理の解説。CakePHP3ではnewEntity()の処理でバリデートするため1行追加で対応可能。
-
-
CakePHP5系で認証機能のAuthenticationプラグインをインストール・エラー発生注意
CakePHPのユーザ認証に使用するオフィシャルなプラグインAuthenticationだが、CakePHP5系では Authentication Ver.3系を使う必要があるが、公式ChiffonBookが間違えている。
-
-
CakePHP4のCakeDC/Usersの Usersへの接続、バリデーションのカスタマイズ方法解説
CakeDC謹製Usersプラグインの紹介。CakePHP4で使う場合のUsersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。
-
-
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。
-
-
CakePHP4でロギングスコープやログレベルを使用してログを出し分ける方法を解説
CakePHPのログ出力方法の解説。app.phpにログ設定をし、スコープやレベルを指定してログ出力を振り分ける方法、CakePHP4で配列出力にはvar_exportが必要なことなどを解説。
-
-
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。
-
-
CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」
CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。
-
-
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。
-
-
CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1
CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその1で基本的な導入方法の解説で読みながら簡単に導入が可能。
-
-
CakePHP3でQRコードを作成、表示するライブラリ「cakePHP-QR-Code-Helper」
CakePHPでQRコードを生成するライブラリ「cakePHP-QR-Code-Helper」の紹介。GDライブラリのインストールも必要ないHelperとして提供されているため、ファイルを設置すればすぐに使用可能。