2008/08/11
CakePHP
1 Comment
CakePHP 1.2.0.7296 で起きたこと。
$this->data はビューからも呼び出せるけど
なぜか消えちゃうデータが。
ビューから$this->data を呼ぶと、
なぜか全角文字が消滅する。
同じフォームから半角英数字を入れたら
普通に受け取れるのに、
全角文字をいれたら空になってる。
何ですかこれは。
手元の環境でそうなっているだけなのか
常にそうなるのか
そもそも仕様なのかはわからない。
ともかくメモ。
2008/03/12
CakePHP
No Comments
バージョン 1.2.6311 にて。
動かないというより、token はセットされてるのに全部弾かれてる。
今のところ原因不明です。
2008/03/12
CakePHP
1 Comment
これも 1.2.6311 固有の不具合だと思われ。
データベースによって、
$this->Model->del()
が動作する場合としない場合がある模様。
MySQL についていえば、
5系はいけるけど4系はダメなのかな?
テストまでしてないからわかりません。
で、これは 1.2.6311 の
cake/libs/model/datasources/dbo_source.php
が吐き出す SQL に問題がある模様。
新しいソースを持ってきたら直った。
まあβですから。
2008/03/04
CakePHP
No Comments
CakePHP は tmp ディレクトリに書き込みを行うので
PHP 実行者の権限で書き込みができるようにする
(実際にはなってなくても一応動くみたいだけど)
のだが、なぜかそうすると router が見つからないというエラーが出ていた。
Fatal error: Undefined class name ‘router’ in /home/***/***/cake/dispatcher.php on line 333
書き込み可にしたらエラーが出るという
よくわからない事態にしばらく悩んでいたのだが、
実に簡単な理由だった。
ローカルでテストしたときに tmp/cache にできていたキャッシュファイルが
そのまま一緒にアップロードされて、
それを利用しようとしていたせい。
- tmp/cache/models
- tmp/cache/persistent
- tmp/cache/views
の3つをカラにして、解決。
2008/02/29
CakePHP
No Comments
CakePHP で使うモデルのメソッド Find と FindAll で、対象データがなかった場合は戻り値が少し違う。
Find と FindBy の場合、対象データがなかったら false が返ってくる。
それに対して FindAll と FindAllByの場合は false ではなく空の配列が返ってくる。
ということはどういうことかというと、
if (!$this->User->FindAllById($id)) {
//対象データがなかった場合の処理
}
なら期待どおり動くが
if ($this->User->FindAllById($id) === false) {
//対象データがなかった場合の処理
}
ではダメということ。
Find, FindBy なら false が返ってくるからどっちでもいける。
対象データの存在確認をするなら findCount で調べればいいわけで、そのために findAll を使うことはないかもしれないけど、例えば
$users = $this->User->FindAllByGroupId($group_id);
if ($users === false) {
//対象データがなかった場合の処理
}
は、ついやってしまいそうな気がする。しない?
2008/02/28
CakePHP
No Comments
view でやたら
__('文字列')
っていうのが出てくる(アンダーバー2つね)から何かと思ったら、 国際化のための関数らしい。
» CakePHP のおいしい食べ方: CakePHP1.2の簡単国際化
単語を置き換えるだけでいい部分は、これをやっとくといいかな。
2008/02/18
CakePHP
9 Comments
バージョン1.2.0.6311のバグかな?
formヘルパーで
$form->input('User/group_id', array(
'type' => 'select',
'options' => $groups,
'selected' => $user['User']['group_id'],
));
などとしている場合、そもそも User.group_id が存在しなかったら renderしても画面が真っ白になる。
もちろん存在しないものを指定しようとしているのだからミスなんだけど、でも真っ白て。
原因を特定するのに手間取ってしまったのでメモ。