エス技研

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


CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説

      2019/02/24

CakePHP3で静的ページの作成は webrootか pagesを使う

 

CakePHP3で静的ページの作成には 2つの方法がある

 
CakePHP3で静的なページを作成したい場合は 2つの方法があります。
 

  • /webroot フォルダを活用する
  • /src/Controller/PagesController.php を活用する

 
この記事では、上記の 2つの方法について解説します。
 
 

/webroot フォルダを活用する

 
まず、/webroot フォルダを活用する方法です。
 
/webroot フォルダを活用する方法はシンプルです。
 
/webroot フォルダは、ドキュメントルートの場所になっていて、ブラウザでアクセスできる領域になっています。
そのため、静的なファイルをこの場所に入れれば、ブラウザでアクセスすることができます。
 
通常は、画像ファイルや CSSファイル、JavaScriptファイルなどを設置する場所として活用されます。
 
同様に、静的な HTMLファイルを設置すればそのままブラウザでアクセスすることができます。
 
例えば、デフォルトでは下記のファイルが入っています。
/webroot/img/cake.power.gif
 
これにアクセスする場合の URLは下記のようになります。
http://example.com/img/cake.power.gif
 
ファイルを置くだけでアクセスできますので、非常に簡単です。
 


 

/src/Controller/PagesController.php を活用する

 
/webroot フォルダを活用する方法は、シンプルで分かりやすい方法です。
 
ですが、静的なページといえども HTMLファイルとして設置するのではなく、CakePHPの中に組み込みたい、と思う場合もあるでしょう。
 
例えば、CakePHPのテンプレート機能を活用して、ヘッダーやフッターなどを共通で使用するパーツ化している場合などは、まさに CakePHPに組み込みたいと思う場面でしょう。
 
そんなときは、/src/Controller/PagesController.php を活用します。
 
 
デフォルトの PagesController.php ファイルは「display」というアクションしか入っていないシンプルなファイルです。
 
ですが、このアクションでは、受け取った URLに基づいてテンプレートファイルを取得し画面を表示する、という機能を持っています。
 
これによって、静的なページは下記の URLのように表示する事ができるようになっています。
http://example.com/pages/******
 
 

デフォルトのトップページを参考にした解説

 
CakePHPをインストールして最初に表示されるデフォルトのトップページもこの pagesを利用して表示されています。
 
トップページですので
http://example.com/
という URLで表示されますが、pagesを使って
http://example.com/pages/home
という URLでアクセスしても同様のページを表示することができます。
 
また、このデフォルトのトップページのテンプレートファイルは「/src/Template/Pages/home.ctp」です。
 
 
同様に、「/src/Template/」フォルダの中に「****.ctp」というファイルを作成し、
http://example.com/pages/****
という URLでアクセスすると、設置した「****.ctp」ファイルの内容が表示されます。
 
 

ルーティング機能を使って URLとプログラム実体とを関連付ける

 
また、「http://example.com/」という URLでアクセスした際、「http://example.com/pages/home」のページを表示させるようにする設定は「ルーティング」設定と呼ばれるものです。
 
CakePHP3・Cookbook・ルーティング
https://book.cakephp.org/3.0/ja/development/routing.html
 
この記事では詳細な解説はしませんので、上記のオフィシャルサイトなどを確認してほしいのですが、ルーティングの設定は「/config/routes.php」ファイルで行います。
 
デフォルトの設定では下記の記述があると思いますが、これが、ドキュメントルート「/」にアクセスがあった場合は「http://example.com/pages/home」のページを表示する、という設定をしているものになります。
 

 
これによって、ドキュメントルートのページが表示される、ということになっています。
 
 

pagesに関する追加の解説

 
前項のデフォルトのトップページを参考に解説したように、pages機能を利用して、静的なページを表示することができるようになります。
 
ですが、pages機能を利用してアクセスする場合は
http://example.com/pages/****
という URLになってしまいます。
 
ですが、これを
http://example.com/****
という URLでアクセスしたい場合もあるかと思いますが、その時は、先に解説したように、ルーティング機能を使って、URLとそれで利用するプログラムとを関連付けて望んでいる URLを設定することができるようになります。
 
 
今回は「静的なページを作るためのページとして pagesを利用する」という趣旨で記事を書いています。
ですが、pagesの利用は静的ページ専用というわけではありません。
 
正確には、データベースに接続せず、Controllerや Modelでの処理が必要がないページを表示する場合に使うのが pages、という感じのものです。
 
そのため、完全に静的なページだけではなく、テンプレートファイル側に記載するだけで済むような簡単な処理であれば pages機能を用いたページを作成するといいでしょう。
 
 
最後になってしまいましたが、ルーティングの設定は、基本的にはファイルの記載を変更すればすぐに反映されますが、環境によってはキャッシュされる場合もあるようです。
ルーティングの設定をしたけども、思ったような動きにならない、というときはキャッシュをクリアしてみるといいのではないか、と思います。
下記の記事を参考にしてください。
CakePHP3のルーティング(routes.php)の変更が反映されない時はキャッシュのクリアを
CakePHP3のキャッシュをクリアする方法「bin/cake cache clear_all」を使う
 
 

CakePHP3の関連記事

CakePHP3で環境変数を設定して本番環境と開発環境を分けて処理をする場合
CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応
CakePHP3でアソシエーション先のカラムでデータをソートして取得したい
CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
CakePHP3のアソシエーションでJOINのタイプのLEFT、INNERを切り替えながら使う方法
CakePHP3のHtmlHelperのLink設定のまとめ。mailto、URL、Root/Homeのリンクなども
CakePHP3で「SQLSTATE[23000]: Integrity constraint violation」「SQLSTATE[42S22]: Column not found」などのエラーが出たときの確認するポイント
CakePHP3のfriendsofcake/searchでツリーカテゴリーの子階層も含めて検索する方法
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3のユーザ管理・認証プラグイン CakeDC/Usersの導入・機能解説・3.1.5対応
CakePHP3のユーザ管理・認証プラグインCakeDC/Usersのインストール解説・3.6以降対応

CakePHP3のユーザ管理プラグイン Usersは、ユーザ登録、メール認証、ログイン認証、ユーザ管理、権限管理、reCAPTCHAなど会員制のサイトを簡単に実現可能。その導入方法、カスタマイズ方法を解説。

CakePHP3のインストールでURL rewriting......のエラーが!その解決方法解説
CakePHP3のインストールでURL rewriting……のエラーが!その解決方法解説

CakePHP3をインストールしたら URL rewriting is not properly configured.のエラーが。原因は.htaccessが有効になっていないこと。httpd.confに設定を追加すればOK。

CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る

他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。

CakePHP 2.3 Search Pluginで検索処理 その5入力項目に複数項目入力した場合の AND検索、OR検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で複数項目を入力した場合の AND検索、OR検索についての解説です。

CakePHP 2.3 ID以外のカラムでアソシエーション(連携)をさせる場合の詳細ページの注意点

ID以外のカラムでアソシエーション(連携)させて詳細ページを表示させる際の考え方と注意点をサンプルソースを用いて解説しています。

CakePHP 2.x系 Viewでのコメントの記述方法など

CakePHPにおいて View、ctpファイルでコメントを記述する方法を解説。

CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法
CakePHP3のCakeDC/Usersでログインユーザの所有レコードのみ更新、削除する権限管理の設定方法

CakePHP3のユーザ管理、ログイン認証プラグイン「CakeDC/Users」の権限管理を行う方法やアクセスできるコントローラー、アクションを設定、所有権を持つレコードのみ更新できる設定方法を解説。

CakePHP 2.3 ログイン、操作履歴、アクセスログ出力

CakePHPでログインや操作履歴などのアクセスログ出力処理を作成します。

CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法
CakePHP3のdatetime型カラムの日時の扱い。秒まで正しく表示する方法

CakePHP3の日時カラムで秒まで扱う場合はdate()、strtotime()関数ではうまくいかない。CakePHP3であらかじめ用意された「i18nFormat()」を使用する。

MySQL、CakePHP 2.3で「tinyint(1)」の Boolean型の動作を再確認

MySQL+CakePHPの環境で「tinyint(1)」を利用する際の動作を検証。「tinyint(1)」の Boolean型について CakePHPでは自動処理が実施されていることを確認しました。