月別アーカイブ: 2012年11月

CakePHP2.xコントローラーフォルダ分け

ここではCakePHP2.x系のコントローラーをフォルダに分ける方法を解説していきます。

cakephp

今回は例として
/app/Controller/admin/
/app/Controller/front/
と管理画面用コントローラーとフロント用コントローラーに分けていきます。

bootstrap.phpを編集

/app/Config/bootstrap.php

if (preg_match('/admin/', $_SERVER['REQUEST_URI'])) {
    App::build(array(
            'Controller' => array(ROOT.DS.APP_DIR.DS.'Controller'.DS.'admin'.DS),
    ));
}
else {
    App::build(array(
            'Controller' => array(ROOT.DS.APP_DIR.DS.'Controller'.DS.'front'.DS),
    ));
}

$_SERVER[‘REQUEST_URI’]でアクセスがあったURLで管理画面かフロントかを分けています。

URLのルーティング

/app/Config/routes.php

Router::connect('/admin/', array('controller' => 'Index', 'action' => 'index'));
Router::connect('/admin/top/', array('controller' => 'Top', 'action' => 'index'));

http://www.example.com/admin/とアクセスするとadminフォルダのIndexControllerのindexメソッドが呼ばれます。
※アクション名がindexなら’action’ => ‘index’を省略できます。

constファイル作成

/app/Config/bootstrap.phpの最後にconfig(‘const’);を記入してください。

const.phpを作成

/app/Config/const.php

<?php
    /** プロジェクト名 **/
    if (preg_match('/projectname/', $_SERVER['REQUEST_URI'])) {
        define('PROJECT', '/projectname');
    }
    else {
        define('PROJECT', null);
    }
   
    // 管理画面
    if (preg_match('/admin/', $_SERVER['REQUEST_URI'])) {
        define('SITE_URL', PROJECT . '/admin/');
        /** ログイン画面 **/
        define('INDEX', SITE_URL);
        /** TOP画面 **/
        define('TOP', SITE_URL . 'top/');
    }
    // フロント
    else {
        define('SITE_URL', PROJECT . '/');
        define('INDEX', SITE_URL);
    }

これでルーティングされた独自定数の定義が完了。
$this->request->hereと同じ扱いで使用できます。

CakePHP2.x インストール

ここではCakePHP2.x系のインストールと設定までを行います。

cakephp

CakePHPのダウンロード
http://cakephp.jp/

core.phpの編集

/app/Config/core.php

/**
 * The level of CakePHP security.
 */
    Configure::write('Security.level', 'medium');
  
/**
 * A random string used in security hashing methods.
 */
    Configure::write('Security.salt', 'BeetTakeshi000HitoshiMatumoto111MasatoshiHamada222');
  
/**
 * A random numeric string (digits only) used to encrypt/decrypt strings.
 */
    Configure::write('Security.cipherSeed', '76859304454542496749461235');

解説

182、187、192行目を編集します。
Security.level (4行目)
high、medium、lowの三種類が設定できます。

Security.salt (9行目)
ランダムな英数字に変更してください。

Security.cipherSeed (14行目)
ランダムな数字に変更してください。

database.phpの編集

/app/Config/database.php

class DATABASE_CONFIG {
  
    public $default = array(
            'datasource' => 'Database/Mysql',
            'persistent' => false,
            'host' => 'localhost',
            'login' => 'loginid',
            'password' => 'loginpassword',
            'database' => 'dbname',
            'prefix' => '',
            'encoding' => 'utf8',
    );
}

host、login、password、databaseを設定で完了。