先日、cakeを試してみようとおもってて、、
でもExtJSとの絡みを考えるとDirect使えんしなぁ
と呟いてたら@martini3ozさんがBanchaってのがそれっぽいよ。
と教えてくれました。
見てみます!と返信したもののCake自体が
チンプンカンプンなので入門の入門を触ってみました。
CakePHP2.0
事始め
こちらををベースに写経していきます。
ダウンロード~動かすまで
- DL
2012/7/6現在の最新版のstableである2.2.0を使用してみます。
こちらのTOP右側のリンクからDL可能。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
前のエントリでも書きましたが、Bancha0.9.5は2.2.Xシリーズには
対応しておらんようです。
※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※
設置
UserDir有効のためUsrDir/cakephpTest/public_html配下にcakephpTestとして配置してみた。
で、このままだとnotfoundになるのでpublick_html配下の.htaccessにRewriteBase /~cakephpTest/
必然的にその配下の関連する.htaccessも書きかえました。
public_html/app配下の.htaccess
RewriteBase /~cakephpTest/app/
public_html/app/webroot配下の.htaccess
RewriteBase /~cakephpTest/app/webroot/
を追記。
確認
localhost:8080/~cakephpTest/
アクセスして確認。
* DBの設定
* セキュリティソルト、セキュリティシードはあと。で設定。
Controllerについて
コントローラは/app/Controller配下に作る。
コントローラは(アプリケーション)ごとに設置と理解。
で、コントローラ名は(アプリケーション名:パスカルケースにして)+Controller.phpとするらしい。
ex)hogehogeというアプリケーション→HogehogeController.php
コントローラ(アプリケーション)は複数のアクションをまとめたもの?として理解。
ファイル命名規則は、パスカルケースで、
XxxxxxController.php
として作成すること。
クラスの命名規則も同様に。
クラス定義
Controllerクラスの定義はまず、
App::uses('AppController','Controller');
として利用できるように定義、
AppControllerクラスを継承して定義するみたい。
アクション定義
publicメソッドがアクションとして認識されるようですね。
メソッド≒アクション。と。
基本、アクションが1URLに割り当てられる見たい。
アクション間遷移
リダイレクト
public function index()
{
$this->autoRender = false;
$this->redirect(‘./other’);/そのコントローラ(アプリケーション)内のotherメソッド(アクション)にリダイレクト/
}フォワード
public function index()
{
$this->autoRender = false;
$this->setAction(‘other’);/そのコントローラ(アプリケーション)内のotherメソッド(アクション)にフォワード(URLの変更は発生せず)/
}URLパラメタによる値渡し
$this->redirect(‘./other/hoge/fuga/piyo’);
Modelの利用
モデル名がコントローラ名と一致した際に自動的に利用可能になるようです。
ただ、明示的に設定することも可能で、
var $uses = array(‘Recipe’, ‘User’);
のように$usesプロパティに指定することでインスタンス化されるようです。
お試しコード
<?php
App::uses('AppController', 'Controller');
// {{{ sampleController
/**
* sampleController Class
*
* sample
*
* @category CategoryName
* @package PackageName
* @copyright 2011-2011
* @license http://www.opensource.org/licenses/mit-license.html MIT License
* @version Release: sample
*/
class SampleController
extends AppController
{
// {{{ const
// }}}
// {{{ props
// }}}
// {{{ __construct
/**
* コンストラクタ
*
* @param type argname discription
**/
// function __construct($argname)
// {
// # code...
// }
// // }}}
// // {{{ __destruct
// /**
// * デストラクタ
// **/
// function __destruct()
// {
// # code...
// }
// }}}
// {{{ index
/**
*
*
* @param type $argname discription
* @return type discription
*/
public function index()
{
$this->autoRender = false;
//var_dump('index');
//$this->redirect('./other/hoge/fuga/piyo');
//$this->setAction('other','hoge','fuga','piyo');
$params = array(
'hoge' => array(
'hoge1' => 'hogehoge1',
'hoge2' => 'hogehoge2',
'hoge3' => 'hogehoge3',
),
'fuga' => array(
'fuga1' => 'fugafuga1',
'fuga2' => 'fugafuga2',
'fuga3' => 'fugafuga3',
)
);
//$this->setAction('other','hoge','fuga','piyo');
$this->setAction('other',$params);
}
//public function other($a,$b,$c){
public function other($params){
$this->autoRender = false;
//var_dump('other');
//var_dump($a);
//var_dump($b);
//var_dump($c);
var_dump($params);
}
// }}}
}
// }}}
0 件のコメント:
コメントを投稿