3月 17

Viewで同じレイアウトでよく使うパーツを使うとき、renderElementを使います。
ログインフォームやサイドバーに出す部分などでよく使うやつです。

Smartyだとこんな感じですね。
index.tpl

{include file='form.tpl'} 
{include file='ranking.tpl'} 

Cakeの場合は以下のようになります。
index.ctp

    <?php echo $this->renderElement("form")?>
    <?php echo $this->renderElement("ranking")?>

下記のファイルがインクルードされます。

views/elements/form.ctp
views/elements/ranking.ctp

3月 17

Cakeでlistアクションにcategoryとpageを渡す場合、下記のようなURIになります。
http://localhost/blog/list/3/2

コントローラー側:

    function list( $category, $page ){
        //処理
    }

listアクションへのパラメーター数が違うパターンがあると面倒です。

下記のように”URL/パラメーター:値”の形にするとパラメーター付きで値を
渡せます。

http://localhost/blog/list/category:3/page:2
コントローラー側:

    function list(){
        $this->params['named']['category']; 
        $this->params['named']['page']; 
    }

3月 16

/cake/libs/view/layouts/default.ctp

/app/views/layouts/default.ctpにコピーして編集して使います。

コントローラーから下記のように指定できます。
(/app/views/layouts/admin.ctpを指定する場合)
$this->render($layout=’admin.ctp’, $file=’index.ctp’);

3月 16

アクション名ではないViewを使用させたいときは、下記のようにします。

function edit(){
     // renderでテンプレートを指定できます(add.ctpを指定)
     $this->render('add');
}

3月 15

PHP5にはSimpleXMLなどがありますが、CakePHPのXMLクラスでも同様に使えます。
ローカルファイルに使ったり、WEBAPIのリクエストURLやRSSを処理したり出来ます。


$xml_rakuten = "http://api.rakuten.co.jp/rws/2.0/rest?
developerId=[YOUR_developerID]
&operation=ItemSearch
&version=2009-04-15
&keyword=%E7%A6%8F%E8%A2%8B
&sort=%2BitemPrice";

uses('Xml');
$xml = new Xml($xml_rakuten);
$xml_array = Set::reverse($xml);