2009/06/25 by マッチー
$this->render('/elements/calender');
こういう書き方をすると、elementsの中にあるテンプレートをレンダリングしてくれる。
今日、ポップアップウインドウでカレンダーを表示させる機能を作っていたんですけど、カレンダーのテンプレートはどのページから呼んでも同じだから、こんなようなことができないかなと思って調べてみたら、やっぱりありました。そりゃあるよね。これくらいの機能なら。
別に分かりにくい機能とかではないけれど、これから先もきっとこいつ
続きを読む
2009/06/24 by マッチー
通常、DBの設計の際には、照合順序をUTF-8にしておけば何の問題もないと思っていたのだが、CPIというレンタルサーバのDBを扱う際、照合順序も全部ちゃんとUTF-8にしているのに、文字化けが直らないという問題が発生した。原因が全く分からずに、かなりの時間、悪戦苦闘した。正確にいうと、悪戦苦闘していたのは僕じゃなくて先輩プログラマーのヅヤさんがですけど。
で、原因を調べているうちに我流天性さんというサイトに行き当たり、その解決法も書いてあったので参考にさせてもらった。
どうやらあそこは、文字
続きを読む
2009/06/23 by マッチー
つい先日、フォームヘルパーを使ってチェックボックスを作ったのだけど、どうやらlabelの指定ができないっぽく、書き方としてはこんな感じになってしまった。
<?php echo $form->checkbox('check') ?><label for="Check">チェックボックス</label>
なので、ラジオボタンも同じ感じなのかなぁと思っていたら、実はそんなことなかったんですね。
<?php echo $form->
続きを読む
2009/06/16 by マッチー
フォームヘルパーのチェックボックスメソッドを使うと、言うまでもなくチェックボックスをページ内に設置することができる。
cakeのヘルパーは何かと便利で、余計なことをしなければ勝手に値を保持してくれたり自動的にhidden要素を作ってくれたりするのだけど、この自動的にhidden要素を作ってくれるおかげで、新規登録のときは問題なくても、編集のときにうまいことアップデートが行われなくてちょっと困った。
SQL文を見ても、編集画面でチェックボックスの欄に何の手も加えないでアップデートを行った場合、
続きを読む
2009/06/12 by マッチー
ちょっと前に、renderElementを使うとelementsフォルダに入っているファイルをview内で読み込めるようなことを書いた。それについて一つ知ったことがあったので、メモ。
// index.ctp
<?php foreach($data as $val) : ?>
<?php echo $this->renderElement('program') ?>
<?php endforeach ?>
// program.c
続きを読む
2009/06/05 by マッチー
CakePHPでプログラムを組んでいるとき、controller内で同じソースを書く場面が何度も出てきていたので、そういうのって共通化して使うことができないのかな~と何度も思ったんですが、やっぱりできるんですね。そりゃできるよね。だってCakePHPだもん。
beforeFilterってのを使うと、それができるらしいです。
function beforeFilter() {
共通で使うソースを書く
}
function add() {
}
function edit(
続きを読む
2009/06/04 by マッチー
CakePHPの中身を見てみると、viewsフォルダの中にelementsというフォルダがある。
この中に適当なctpファイルなどを作っておくと、renderElementでそのファイルを読み込むことができる。ページ内の共通部分などをここで作っておくと、何度も使いまわせるので効率が良くなる。
……と、書いてはみたものの、実はまだあまり活用したことがない部分だったりします。これを知ったときは意外と使う機会が多そうだぞとか思ったんですけどねぇ。
昨日も、Ajaxを使ってエレメントの内容を書き換
続きを読む
2009/06/03 by マッチー
唐突だけれど、今、UserとCategoryがhasAndBelongsToMany(以下HABTM)で関連づいているとする。
この場合、usersテーブルとcategoriesテーブルの他に、両者を関連づける結合テーブルというのが別に必要になる。この結合テーブルには、インデックスとなるidの他に、user_idとcategory_idのカラムを用意してやる必要がある。
ちなみにCakePHPの命名規約に従うなら、結合テーブルには結合する二つのテーブルの名前(複数形)をアンダーバーでつなげた
続きを読む
2009/06/02 by マッチー
$this->User->saveall($this->data, array('validate' => 'first'));
アソシエーションで関連づけられていると、上記のようにsaveallを行うと関連づけられているものも一緒にデータの登録が行われる。登録したくないと思っていてもcakeはなかなか気配り上手なやつなので、気を利かせて勝手にバリデーションやらデータの登録やらを行ってしまう。
そういうとき、unbindModelを使うと、一時的にアソシエーシ
続きを読む
2009/05/26 by マッチー
PHPにcompactという関数がある。
複数の変数から一つの配列を作りたいときに使うものらしい。
例えばCakePHPでビューにデータを送るときなんかに使ったりする。
$data = $this->Model->find('all');
$this->set(compact('data'));
この二行目は以下の一行と同義。
$this->set('data', $data);
まあ、上記のように変数が一つしかないような場合だったらわざわざ
続きを読む