エス技研

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


CakePHP3でDocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得

      2017/10/28

DocumentRootやwebroot、imgフォルダのURLやドメイン、パスを取得

 

CakePHP3では UrlHelperで取得するように変わった

 
CakePHP3でファイルのアップロード処理を自作・解説付き・その1」「CakePHP3で画像・ファイルのアップロード処理を自作・解説付き・その2」でファイルのアップロード処理を作りましたが、その際、アップロードした画像を表示するための画像のパスの取得方法についても調べましたので解説します。
 
 <img src=”【ここ部分のパス】/upload.jpg”>
 
また、取得方法は、CakePHP2では HtmlHelperを使用していましたが、CakePHP3では UrlHelperを使用するように変更になっていますので、CakePHP2の時の記述方法では動かなくなっています。
 
 

UrlHelperを使ってサイトの URLを取得する方法

 
UrlHelperを使ってフォルダのパス、URLを取得する方法を解説します。
UrlHelperを使うこの方法は、ビューでのみ使用可能です。
 

 
基本形がこの形です。
第 1引数に「”/”」を指定すると、ドキュメントルート(webroot)フォルダのパスが取得できます。
 
第 2引数に「true」を指定すると、URLが取得できます。
 例:http://example.com/
 

 
上記のように引数を指定することで、ドキュメントルート内の「images」フォルダのパスが取得できます。
また、引数内にディレクトリセパレーター「/」も含めると、ディレクトリセパレーターが付いたパスが取得できます。
 
 

 
第 1引数を与えない場合は、表示しているパス、URLを取得することができます。
第 1引数の記述方法は「""」「null」のいずれでも OKです。
 
 


 

Routerクラスを使ってサイトの URLを取得する方法

 
Routerクラスを使ってサイトの URLを取得する方法の解説です。
Routerクラスは、ビュー以外のコントロールやモデルなどで使用できます。
 
 
Routerクラスを使用する際は、まず最初に use句で使用を宣言します。

 

 
パスの取得方法は、上記の通りです。
UrlHelperも「Router::url()」クラスで取得する方法も、最終的には同じメソッドが呼び出されますので、引数の仕様は同じで、第 2引数に「true」を指定すると URLを取得することができます。
 
 

リクエストオブジェクトを利用してパスを取得する方法

 
今回の記事の趣旨とはやや違いますが、リクエストオブジェクトを使ってパスを取得する方法もあります。
リクエストオブジェクトからパスを取得する方法は、ビュー、コントローラーを問わず取得することができます。
 
ただし、取得できるのはリクエストに応じたパスですので、リクエストの URLに関係ないパは取得できませんし、URLも取得できません。
 
 
リクエストの URLが「/subdir/articles/edit/1?page=1」だとすると、それぞれ下記の情報を取得することができます。
 

 
 
この方法を利用して、下記の記述で webroot内にある「images」フォルダへのパスを生成することもできます。
 

 
 
CakePHP3.4.0以降は下記の様に記述するようです。

 
 
リクエストオブジェクトを利用したパス情報の取得方法は、下記のオフィシャルサイトに詳細があります。
https://book.cakephp.org/3.0/ja/controllers/request-response.html#id6
 
 

CakePHP3でのURLやドメイン、フォルダへのパスの取得のまとめ

 
CakePHP3では、URLやドメイン、フォルダへのパスの取得方法が変更になり、UrlHelperを使う方法、Routerクラスを使う方法になりました。
 
画像を表示するためのパスを取得する場合など、ビューの中で使う場合が多いと思いますので、UrlHelperを使う機会の方が多いと思いますが、この方法で取得が可能になります。
 
 
今回の解説は、表示の際に使用するパスの取得ですが、対して、ファイルアップロードの処理やエクセルファイルのダウンロード処理などを構築する際には、フォルダの絶対パスが必要になります。
そのようなフォルダのパスを表す定数についての記事は下記に書いていますので、あわせて参考にしてください。
 
 
 

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」に関する記事一覧
 
 

 - CakePHP 3.x 4.x 5.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHPで Auto Incrementを外すと Duplicate entry '0' for keyのエラーが出るかも
CakePHPで Auto Incrementを外すと Duplicate entry ‘0’ for keyのエラーが出るかも

CakePHPでAuto Incrementの設定を変更したときに「Duplicate entry ‘0’ for key」のエラーが出た。原因はModel内で IDを編集する処理の追加を忘れていたからだった。

CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い
CakePHP3でシェルを作成しコマンドラインから実行・CakePHP2との違い

CakePHP3のシェルスクリプトを作成し、コマンドラインから実行する方法を解説。複数単語をつなげる場合の対応方法がCakePHP2より制限が厳しくなったのでCakePHP3の命名規則の確認が必要だ。

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

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

CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も

CakePHP3で Insert … On Duplicate Key Update構文(upsert)を実行する方法を解説。バルク処理の方法も用意されているため大量処理の場合も対応可能。

CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説
CakePHP4のフラッシュメッセージの表示場所、デザインを変更する方法を解説

CakePHP4のエラーメッセージ、完了メッセージなどを表示するフラッシュ処理の解説。Controller、レイアウトファイル、テンプレートファイルでそれぞれ処理を指定する。

CakePHP4から外部のデータベースにアクセスする方法解説
CakePHP4から外部のデータベースにアクセスする方法解説

CakePHP4のシステムから他のシステムのデータベースにアクセスをし、SQL文を実行する方法を解説。try-catchでエラーを取得する方法も解説。

CakePHP 2.3 Search Pluginで検索処理 その1設置方法

CakePHPの検索プラグイン Search Pluginの設置方法と基本的な検索処理の解説です。

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。

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

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

CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法
CakePHP3の検索プラグイン「friendsofcake/search」の様々な検索の仕方の実装方法

CakePHP3で検索をするプラグイン「friendsofcake/search」の検索条件のカスタマイズ方法の解説。検索項目を増やしたり、以上、以下での検索や、チェックボックスによる検索の方法などを解説。