未分類

CakePHP 研究 -迷ったところ-

CakePHP の学習するうえで迷ったところをまとめています。解決策が分かれば書いていますが、まだ確定しておらず、とりあえず解決したようなものも書きとめています。

日本語翻訳用のファイル (default.po) を作成しました。msgstr に日本語訳を入れると、英語表記は消えるのですが、日本語が表示されず空白で出力されます。
→ デフォルトでは SJIS になっているので、UTF-8 に変更して保存します。

ItemUses という名前のテーブルを作りました。モデル名は単数形の ItemUse を期待していたのですが、bake を実行すると ItemUs と出てきました。英単語の複数形と単数形は自動変換されるのですが、これはバグかもしれません。
→ 苦渋の決断ですが、別の名称を付けました。

アソシエーションを利用して、フォームのセレクトメニューを出すように機能を変更しました。二つのモデルそれぞれにアソシエーションを記述して対処しましたところ、セレクトボックスは表示されましたが、中身の選択アイテムが表示されません。
→ Contoller も書き直す必要があります。
$itemCategories = $this->ItemCredit->ItemCategory->find('list');
$itemFlags = $this->ItemCredit->ItemFlag->find('list');
$this->set(compact('itemCategories', 'itemFlags'));

メンバ変数 $paginete を意図的に宣言して、order などの初期化を行っても動作に反映しない。
→ 宣言はせず、index などのメソッド内で、変数に値をセットすると有効になりました。
$this->paginate = array('order' => array('code' => 'ASC'));

 index メソッドで出力される一覧で、数値の右詰めの方法が分からない。NumberHelper にはないのか?
→ とりあえず、td タグに style="text-align:right;" を書いて逃げている。

数値の桁区切りをどうするか?
→ NumberHelper を使って解決しました。

index.ctp で表示されれ一覧画面には各データ行に View・Edit・Delete のボタンがついている。その行タイトルには「Action」という名前がついているが、タイトルだけ左に寄りすぎている。どうやって表示を調整するか?
→ とりあえず、td タグに style="text-align:center;" を書いて逃げている。

フォームの日付フィールドの表示形式が月日年になっており、月は英語の単語で出ている。変更できるか?
→ FormHelp の Input メソッドのオプションを変更すればよい。
echo $this->Form->input('entry_date', array('dateFormat' => 'YMD', monthNames => 'false'));

アソシエーションを2段階設定された先のテーブルを参照できるのか?
→ できる。次の例は items テーブルに直接のアソシエーションが設定されており、items テーブルから subitems テーブルにアソシエーションが設定されている。
<?php echo h($sorting['Item']['subitem']['name']); ?>

add.ctp で縦に表示されている入力フィールドのうち2つを横に並べたい。Html->tableCells を使いたいが、どうしても値が出力されない。
→ とりあえず、ダイレクトに table タグを出力して逃げている。

(続き) table タグを出力して横に並べることができたが、セルの幅が小さくならない。
→ とりあえず、一つ目のセルに width=1% と書けば小さくできた。

(続き) table タグを出力しているが、セルの下に下線が出力されてしまう。
→ とりあえず、border=0 と書いて逃げている。

 

-未分類