エス技研

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の関連記事

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のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

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

Message

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

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

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

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

  関連記事

CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1
CakePHP3の画像、ファイルアップロードプラグインUpload Plugin 3.0の設置解説・その1

CakePHP3でファイル、画像をアップロードするプラグイン、upload plugin 3を導入する手順を解説した記事。3部作のその1で基本的な導入方法の解説で読みながら簡単に導入が可能。

CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装
CakePHP3のfriendsofcake/searchでブックマークチュートリアルのタグ検索を実装

CakePHP3のCookbookにあるブックマークチュートリアル。ここで紹介されているタグで検索する処理を検索プラグイン「friendsofcake/search」で実現する方法を解説しました。

CakePHP3にデザインテンプレートBootstrapを導入する方法・friendsofcake/bootstrap-ui使用
CakePHP3にデザインテンプレートBootstrapを導入する方法・friendsofcake/bootstrap-ui使用

CakePHP3にプラグイン「friendsofcake/bootstrap-ui」、デザインテンプレート「Bootstrap」を設置する手順を解説。Bootstrapの簡単な使い方やデフォルトのデザインとの混在方法なども解説。

CakePHP 2.3 Search Pluginで検索処理 その6ORDER、sortソートの機能

CakePHPの検索プラグイン Search Pluginの検索処理の中で order、ソートについての解説です。

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

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

CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ

CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。

CakePHP 2.3 Search Pluginで検索処理 その7queryを使って 日付の範囲検索

CakePHPの検索プラグイン Search Pluginの検索処理の中で queryを使って日付の範囲検索の方法です。

CakePHP3のメール送信の処理・テンプレート使用・添付ファイル送信も解説
CakePHP3のメール送信の処理・テンプレート使用・添付ファイル送信も解説

CakePHP3からメールを送信する方法解説。基本的な記述方法を基にして、テンプレートを使う方法、ファイルを添付する方法へと拡張しながら解説。

CakePHP3の検索プラグイン「friendsofcake/search」の設置方法・CakePHP3.6対応
CakePHP3の検索プラグイン「friendsofcake/search」の設置方法・CakePHP3.6対応

CakePHP3で検索を担うプラグイン「friendsofcake/search」の紹介。基本的な設置方法の紹介のほか、処理の記述方法のバリエーション、エラーの解説など。CakeDC/searchより導入は簡単!

CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数
CakePHP3でDocumentRootやtmp、webroot、logsなどのフォルダへのパスの定数

CakePHP3で特定フォルダのパスの定数を解説。root、DocumentRoot、app、config、webroot、tests、tmp、cache、vendor、コア、コアの srcが設定済み。realpath()関数を使うと柔軟なパス指定が可能。