エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP3のcontroller内でテンプレート、レイアウトを変更する際の指定方法

      2019/09/28

CakePHP3でテンプレート、レイアウトのファイルを指定する方法

 

CakePHP3でテンプレートファイル(ctpファイル)を指定する方法

 
CakePHP3では、テンプレートファイル(ctpファイル)を指定しない場合は、デフォルト設定である現在のアクションと同じ名称のテンプレートファイルが読み込まれます。
 
例えば、「index」というアクションの場合は、「index.ctp」ファイルが読み込まれます。
 
ですが、アクション名と違うテンプレート名のファイルを利用したい場合や、レイアウトを変更したい場合は、テンプレートファイル名、レイアウト名を指定する必要があります。
 
具体的には以下のようになります。
 

 
$this -> render ( "find", "admin" );」のような記述を追加します。追加する場所は、処理の一番最後辺りがいいでしょう。
1つ目の引数がテンプレートファイル、2つ目の引数がレイアウトファイルになります。
 
記述するのは、ファイル名が「find.ctp」の場合は、「.ctp」を付けずに「find」のみを記述します。
 
 
記述する場所は、controllerの function内であれば問題ありませんので、一番最後に書いておくといいでしょう。
 
また、テンプレートファイルはそのままに、レイアウトファイルだけ変更したい場合は、「$this -> render ( null, "admin" );」のように、テンプレートファイルに「null」を指定します。
 
 
この記述方法は、CakePHP2の頃から変更がありません!
 
 

CakePHP3でテンプレート、レイアウトのファイルを使用しない場合の設定

 
上記は、テンプレート(View)や、レイアウトのファイルを指定する方法を説明しましたが、テンプレート(View)やレイアウトファイルを使用しないページもあるかと思います。
 
そのようなページで、テンプレート(View)やレイアウトファイルを使用しない設定の方法を解説します。
 
 

 
ちなみに、「false」を指定しているところに「""」を記述すると、エラーになる箇所とならない個所がありました。
 
 

Ajaxでテンプレートを呼び出すときの注意点 2019.09.28 追記

 
レイアウトだけ無効にする方法として解説をしている、上記の
$this->render(null,false);
という記述方法は、正しく動作しない場合があるようです。
 
例えば、Ajaxの処理でレイアウトは必要なく、テンプレートのみ必要な場合は、
$this->render(null,false);
とすると、コントローラーからの変数の受け渡しがうまく行かないようです。
 
そのような場合は、
$this->layout = false;
の方を試してみてください。
 
 

CakePHP3の関連記事

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にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説
CakePHP3でデータを保存する save()で発生するエラーを確認する方法を解説

CakePHP3でデータ保存処理のログを取得する方法。save()では true、falseの戻り値しか取得できないが、saveOrFail()と try…catch文を使いエラーログ、エンティティを取得し、不具合の解析を行う。

CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法
CakePHP4、CakePHP5系の認証処理でログインの有無の確認、ユーザ情報の取得の方法

CakePHP4系、5系のログイン認証の可否のチェック、および、ログインユーザの情報を取得する方法のまとめ。複数の方法があるが手続きが微妙に異なるためまとめてみた。

CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法

CakePHP3でデフォルトのソート条件を設定しつつ画面上でユーザがソート条件を選択したときもソート処理を実行させる方法を解説。ソート条件はページネーションの処理として実装。

CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点
CakePHP5でヘルパーから他のヘルパーを読み込む方法・CakePHP4からの変更点

CakePHP5のヘルパーで他のヘルパーを読み込む方法を解説。公式の日本語CookbookはCakePHP4のソースのままで間違っているため注意が必要。CakePHP4からの移行の際も同じ点に注意が必要。

CakePHP3でファイルのアップロード処理を自作・解説付き・その1
CakePHP3でファイルのアップロード処理を自作・解説付き・その1

CakePHP3でファイルをアップロードする処理を、php.netにある「エラーを起こさない」と説明がある処理を参考に作成。サンプルソースとその解説付きで、コピペでも動くし、カスタマイズも簡単!

CakePHP 2.3で確認画面付きのお問い合わせフォームの作り方

CakePHPで確認画面付きのお問い合わせフォーム、メールフォームの作り方をサンプルを提示しながら解説。

国際化と地域化の翻訳機能「__()」を使って定数に変数を埋め込む方法
国際化と地域化の翻訳機能「__()」を使って定数に変数を埋め込む方法

CakePHP4で定数に変数を埋め込み、翻訳機能「__()」で変数に値を入れる方法を紹介。定型の文章の一部だけを置換したい場合に利用すると便利。

CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法
CakePHP4で現在処理しているコントローラー名、アクション名を取得する方法

CakePHP3で現在処理しているコントローラー名、アクション名を取得する方法を解説。複数の方法があるが、getParam()メソッドを使う方法が汎用性があって便利かも。

CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()
CakePHP4で公開側と管理側のデザインテンプレートを分ける方法・setLayout()

CakePHP4でデフォルトのレイアウトファイル「default.php」は管理側に使用し、これとは別のデザインを公開側のページに設定したい、を実装する方法を解説。

CakePHP 2.3 Search Pluginで検索処理 その2表示件数を動的に変える方法

CakePHPの検索プラグイン Search Pluginの検索処理の中で動的に表示件数を変える方法です。