こんにちは!
ModelのhasManyを使って、データをfindしてきたとき、FormHelperでViewにどう表示させるもんか悩んだのでメモ変わりに書いておきます。
多分なんのこっちゃ言ってるかわからないと思うのですが、以下のようなデータがあった場合にFormHelperのデフォルト値に反映させて、まぁいわば編集のような機能をつけたいときに悩んだのです(ようわからん)
array( 'Article' => array( 'id' => '1', .... ), 'Item' => array( (int)0 => array( 'id' => 1, 'order' => 1, .... ), (int)1 => array( .... ) ) )
こんなデータがあったとします。このデータをControllerからViewに渡していると仮定しときます($this->dataにぶちこむ)
これをFormHelperでぱぱっと表示出来る方法はないかと色々探していたら以下のようなものを見つけました。
How to edit form with hasMany (multiple rows)
ようは以下のような感じです。
data['Item'] as $item){ echo $this->Form->hidden('Item.' . $count . '.id'); echo $this->Form->hidden('Item.' . $count . '.order'); // 必要に応じて増やす $count++; } // Output // // // ... //
このようにコードを書けばあるArticleに紐づくhasManyなものをまとめて編集したい!のような要望にも答えられるかと思います。
ただ$countがちょっとださいなぁと。
あともう1階層深いリレーションを表示させようとするとイテレートをもう1段階増やさなければならないのでカウンターも増えてしまうのが嫌だなぁと。
もっとうまい方法があるはずなんですが、もし誰かこうやったほうがよくない?みたいなのがあれば教えてください!!
Webアプリ開発を加速する CakePHP2定番レシピ119
posted with amazlet at 14.01.21
長谷川 智希
秀和システム
売り上げランキング: 17,934
秀和システム
売り上げランキング: 17,934