CakePHP

CakePHP 1.2 でアクション名にPHPの予約語を使う(未確認)

アクション名が PHP の予約語だった場合は、routes で別名に書き換えることで対処できるかも?(未確認)例えば、/controller/list と Controller::viewList() というメソッドを関連付けてやるには、 'viewList')); http://book.cakephp.org/ja/view/542/Rout…

CakePHP で 任意の View を指定する方法

コントローラの $this->render() の 第3引数でファイル名を直接指定できる。 $this->render(null, null, VIEWS.'foo'.DS.'bar.ctp')この時に、定数 "VIEWS" を使うと表記がすっきりする。

CakePHP で 自動的に View を呼ばない方法

$this->autoRender = false とすれば、View が自動的に呼ばれなくなる。 autoRender = false; } }

CakePHP を利用する際の DocumentRoot

cake (=CakePHP を展開したディレクトリ)や、 cake/app 以下を Apache の DocumentRoot に設定しても動作するようになっているが、 cake/app/webroot がベスト。

CakePHP 1.2 で複数チェックボックス(その3)

http://book.cakephp.org/ja/view/193/options-multiple「'multiple' => true」は、知っていたが、 「'multiple' => 'checkbox'」なるものがあるとはしらなんだ。 input("User.hobby", array('type' => 'select', 'multiple' => 'checkbox', 'options' => ar…

CakePHP のマニュアル翻訳。

CakePHP のマニュアルは、Wiki風の作りになってて簡単に追加・編集できる。日本語版に今まで投稿してる人は数人しかいないけど、どうしてなんだろう。何か深い理由でもあるのだろうか? ここ最近は、CakePHP を使った開発をしている。分からないことがたくさ…

CakePHP 1.2 の Pagination

Pagination とは、データ一覧をページ切替で表示する機能。 ちょっとだけコントローラーとビューを修正することでできた。http://book.cakephp.org/ja/view/166/ただし、URLにおいて、アクション名の後にパラメータを指定しているような場合、ビューで、 $pa…

CakePHP 1.2 の FormHelper::input() の飾りの無効化

1.2 FormHelper参考例より、飾りをすべて無効にする。 input('id', array('label' => false, 'div' => false));

CakePHP 1.2 のACL: コンポーネントによるチェックの方法

コントローラ中で、Aclコンポーネントを使って、アクセス権があるかどうかをチェックする。http://aranworld.com/article/163/cakephp-acl-tutorial-how-to-check-accessコントローラー中でAcl コンポーネントを利用することを宣言しておく。セットで Auth …

CakePHP 1.2 の ACL: 初期設定

コマンドに関するざっくり説明。http://aranworld.com/article/162/cakephp-acl-tutorial-initial-setup 管理用テーブルの作成。 ACL 管理用のテーブルを作成する。app ディレクトリ上で、以下を実行。 cake schema run create DbAcl ARO や ACO 管理コマン…

CakePHP 1.2 のACL

「誰が」、「何を」、「できる or できない」? を管理するための仕組みを ACL (Access Controll List) という。CakePHP 1.2 には、ACL の仕組みが用意されている。・・・が、よくわからない。 まずは概念を理解しつつ、利用方法を考えていく。http://aranwo…

CakePHP 1.2 アプリケーション固有の定数

app/config/bootstrap.php に記述する。

CakePHP 1.2 でファイルアップロード

http://cakebaker.42dh.com/2006/04/15/file-upload-with-cakephp/ より、ビュー: フォーム作成時のオプション 'type' に 'file' を指定する。 create('MyFile', array('action' => 'add', 'type' => 'file')); echo $form->file('File'); echo $form->end()…

CakePHP 1.2 の Model::find()

Model::findAll() や Model::findCount() が非推奨になって、Model::find() が、若干カオスな状態になってるみたい。古い記法と新しい記法があることがわかった。APIリファレンス参照: http://api.cakephp.org/class_model.html#e60758f27fa8486a063b8cc424…

CakePHP 1.2 のシェルで標準入力を取得

Shell クラスから見て $this->Dispatch->stdin に標準入力のハンドラがある。 Dispatch->stdin; while (!feof($stdin)) { $buffer = fgets($stdin); // 1行取得 echo $buffer; // 何らかの処理 } } }

CakePHP 1.2 の AuthComponent

そろそろ、ログイン機能を検討してみる。AuthComponent を使うといいみたい。http://blog.ne2ma2.com/archives/160 http://blog.ne2ma2.com/archives/161 http://blog.ne2ma2.com/archives/163・・・初回はどうしたもんかね。ログインしないとユーザも追加で…

CakePHP 1.2 モデルのqueryメソッドでfind、findAllと同等の返り値を得る方法

http://d.hatena.ne.jp/ngtn/20080409/1207747539 より、 $this->User->query("SELECT * FROM users"); のように、SQL文を直接実行した場合、結果のデータの構造が find などと違っている。 同じ形式にするには find メソッドで発行する SQL文と同じものを生…

CakePHP 1.2.0.7296 RC2 released!

http://bakery.cakephp.org/articles/view/release-some-rc2-sweetnessあ、新しいのがあがってる。色々バグフィックスしてるんだって。 最近リリースのペースがいい感じだね。 CakePHP 1.2 RC1 -> RC2 cake ディレクトリと app/webroot/{index,test}.php を…

CakePHP 1.2 でSQLの値をエスケープ

Sanitize::escape() が使えそう(試してない)。CakePHP 1.1 だと Sanitaize::sql() だったけど、 1.2 になってどこに移動したのか分からなかったがようやく見つけた。

CakePHP 1.2 で大量データの処理

Model::findAll() だとすぐにメモリー不足になってしまうような処理も、 DboSource::fetchRow() で逐次読み込めば大丈夫。 $db =& $this->User->getDataSource(); $row = $ds->fetchRow("SELECT * FROM users"); while (!empty($row)) { var_dump($row); // …

CakePHP 1.2 で SQL の Where 句生成

DboSource::conditions() でできた。これで、Model::findAll() のための条件データ($conditions)からSQLが容易に作成できる。DboSource::limit() や DobSource::order() とかもあるので、試してみたい。直にSQL文を書いてもいいんだけど、DB差し替えなんて大…

CakePHP 1.2 でバッチ処理

Shell クラスを継承したファイルを app/vendors/shells の直下におくと、cake コマンドで実行できるらしい。以下が参考になる。 http://www.syuhari.jp/blog/archives/185また、細かいところは、APIを参考にするといいかも。 http://api.cakephp.org/class_s…

CakePHP 1.2 RC1 の非推奨

find -name "*.php" | xargs grep -B 1 -A 10 "@deprecated"とか打って調べたら結構あるね。いつから非推奨なのかは不明なものが多いけど。非推奨の関数一覧は、 http://api.cakephp.org/1.2/deprecated.html にまとめてある。・・・ありゃ、Model::findAll(…

CakePHP 1.2 で複数チェックボックス(その2)

ビューに関しては動作を確認できた。 モデルについて確認する。コントローラで受け取ったチェックボックスのデータは、配列になっているので、 モデルでは、ちょっと工夫が必要。以下の機能を実装する。 DBに保存する際には、カンマ区切りで保存する事にする…

CakePHP で複数チェックボックス

ビューで以下の様にすると面白いことになった。 checkbox('User.sex.1')?>男性 checkbox('User.sex.2')?>女性 コントローラーでは、$this->data['User']['sex'] が配列になる。var_dump($this->data['User']['sex'] をとると、 array(2) { [1]=> string(1) "…

CakePHP 1.2 のデフォルトのレイアウト

/cake/libs/view/layouts/default.ctp が用意されているので、これを /app/view/layouts 以下にコピーして利用する。

CakePHPの月選択のタグを表示する

FormHelper::month() を利用するのだが、CakePHP 1.2.0.7125 RC1では、英語表記にするかどうかを "monthNames" オプションで指定できる。 month('User.birthday', 'now', array('monthNames' => false)) ?> で、数字表記に変更。・・・もしくは、/cake/libs/…

CakePHP ポケットリファレンス

CakePHP ポケットリファレンスを購入した。 http://gihyo.jp/book/2008/978-4-7741-3503-8開発版なので当たり前なのだが、CakePHP 1.2 は内容がどんどん変わっている様だ。 ポケットリファレンスは、 CakePHP 1.2.0.6311-beta を参照している。

CakePHP で直接 DboSource を呼び出す。

cake/libs/model/datasources/dbo_source.php というファイルがある。 このクラスを利用することで、直接SQLを実行することもできる。http://www.1x1.jp/blog/2008/04/cakephp_php5_dbosource.html より、 useDbConfig); $db->value($hoge); ?> $this->useDB…

CakePHP にハマった点

CakePHPについて情報収集に2日かけた後、利用開始して1日目でハマった点。 環境設定でハマった DocumentRoot 以外にコンテンツを設置した際の設定。 複数の .htaccess に RewriteBase を追加した。 例: http://localhost/~okinaka/cake/ にしたいとき ~/pub…