パス定数と変更方法やURLの取得

CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した構成にすることや運用性をもたせたものにすることが可能になります。

webroot/index.phpで設定する基本パス

  • ROOT -- アプリケーションのディレクトリパス
  • APP_DIR -- アプリケーションのディレクトリ名
  • CAKE_CORE_INCLUDE_PATH -- Cakeライブラリへのパス
  • WEBROOT_DIR -- webrootディレクトリ名
  • WWW_ROOT -- webrootディレクトリ絶対パス
  • DS -- PHPのDIRECTORY_SEPARATORの短縮系。Windowsの場合は\ (バックスラッシュ)、 Linuxの場合は/ (フォーワードスラッシュ)

ここで、「CAKE_CORE_INCLUDE_PATH」を変更することで、例えば、あるディレクトリに異なるバージョンのライブラリを配置しておいてアプリケーション側から読み込むライブラリパスを切り替えることが可能になります。また、1つのライブラリを複数のアプリケーションから使用することも可能です。
関連:CakePHP 2.x インストール

上記を元に設定されるパス

define('CORE_PATH', CAKE_CORE_INCLUDE_PATH . DS);  // CAKE_CORE_INCLUDE_PATH + ディレクトリセパレータ
define('CAKE', CORE_PATH . 'Cake' . DS);           // CORE_PATH + 'Cake' + ディレクトリセパレータ
define('APP', ROOT . DS . APP_DIR . DS);           // ROOT + APP_DIR + ディレクトリセパレータ
define('VENDORS', ROOT . DS . 'vendors' . DS);     // Vendorディレクトリ

define('APPLIBS', APP . 'Lib' . DS);               
define('TESTS', APP . 'Test' . DS);                // Testディレクトリ
define('TMP', APP . 'tmp' . DS);                   // キャッシュやCakeログのベースディレクトリ
define('CACHE', TMP . 'cache' . DS);               // キャッシュが保存されるディレクトリ
define('LOGS', TMP . 'logs' . DS);                 // Cakeログが保存されるディレクトリ

キャッシュやCakeログファイルの保存先を変更する場合は、webroot/index.php内で以下のように変更ができます。

// webroot/index.phpに追加
if (!defined('TMP')) {
    define( 'TMP', "TMPディレクトリのパス");
}

// CACHE・LOGSもそれぞれ個別に設定も可能

関連:ログローテーション

CSS/JS/画像ファイルパス

define('CSS', WWW_ROOT . 'css' . DS);     // 2.4から非推奨
define('CSS_URL', 'css/');                // 2.4から非推奨。App.cssBaseUrlを使用
define('IMAGES', WWW_ROOT . 'img' . DS);  // 2.4から非推奨
define('IMAGES_URL', 'img/');             // 2.4から非推奨。App.imageBaseUrlを使用
define('JS', WWW_ROOT . 'js' . DS);       // 2.4から非推奨
define('JS_URL', 'js/');                  // 2.4から非推奨。App.jsBaseUrlを使用

App.cssBaseUrl、App.jsBaseUrlがそれぞれHtml->css、Html->scriptで使用されます。
関連:Js/Cssファイルの読み込みや出力する方法

URLを取得する

ベースURLとなるFULL_BASE_URLが使用可能です。

FULL_BASE_URL // http://kwski.net

コントロラー/アクションのURLは、Router::urlを使用して取得することができます。第2引数をfalseに設定するとFULL_BASE_URLが除外されたかたちで取得されます。

Router::url( '/', true);
Router::url( '/controller/action/', true);
  • このエントリーをはてなブックマークに追加

関連記事

コントローラ内でバリデーション処理を呼び出す

CakePHPでは、saveメソッドの際にバリデーション処理も自動で行われますが、save処理と切り離してバリデーションを行うこともできます。このときは、save時と若干異なる処理体系になります。

FormヘルパーのMagicOption (マジックオプション) 

Formヘルパーでは、「フィールド名」,「テーブルカラムのデータ型」もしくはモデルの「バリデーション設定」によりフォーム要素を決定したり、自動で属性を付与する「マジックオプション」と呼ばれるものがある

バリデーション前後に処理を追加できる「beforeValidate」「afterValidate」

CakePHPでは、「beforeValidate」「afterValidate」というバリデーション処理の前後で追加の処理を実装できるコールバック関数が用意されています。 beforeVali

CakePHP 2.x インストール

現在まで私が商用・非商用にリリースしているCakePHPアプリケーションは全て1.3.xベースで作成しています。 まだまだロードマップ的には大丈夫そうですが、お客さん向けに納品しているアプリケーショ

Js/Cssファイルの読み込みや出力する方法

CakePHPのHTMLヘルパーにはjsファイルやcssファイルを読み込むためのメソッドが用意されています。ファイルを読み込むのに加えて、出力先を複数指定できるようになっています。 また、インライン

バリデーションエラーメッセージの取得

CakePHP 2.xになってバリデーションエラー時に返却されるメッセージのデータ形式が変更になったようです。1.3系では、ひとつのフィールドに対して返却されるメッセージは一つのルールのみですが、2.

独自のバリデーションルールを作成

CakePHPで組み込みバリデーションルールをつくる方法は、正規表現を定義する方法と独自メソッドを定義する方法の2つがあるようです。 参考 Custom Validation Rules 正規

多言語サイト向けに翻訳ファイルを使って翻訳を行う

CakePHPには、翻訳をビヘイビアを使用する方法と翻訳ファイルを使用する方法の2つがあるそうです。(他にもあるのかな?) 今回は、翻訳ファイルを使用して言語の切り替えを行い、その言語設定をCook

FullCalendarを使用してカレンダーアプリケーション

カレンダーアプリケーションを作成するため、カレンダー表示できるプラグインを探索して出会ったFullcalendarを試してみました。シンプルに使用できる上に、オプションがかなり豊富です。ダウンロード

recursive設定によるfind()性能改善

CakePHPでは、モデルにアソシエーションを設定している場合、recursive(=>joinする階層)はデフォルトで0に設定されています。「recursiveゼロ」の意味するところとは、「1跨ぎま

Comment

  1. #tech #テクノロジー
    CakePHP 2.x | パス定数と変更方法やURLの取得:
    CakePHPは基本的にはディレクトリそのまま配置することで構築が可能ではありますが、設定パスを変更することでセキュリティに考慮した.. http://t.co/52Vr8QvGif

CakePHP関連feedとはてブ (@CakePHP_HBFeed) へ返信する コメントをキャンセル

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

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

    PAGE TOP ↑