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);