トップ > ラボブログ

ラボブログ

« 「※ただしイケメンに限る」のクローン企画案 | メイン | 五月も後半だけどソーシャルアプリ関連 »

CakePHP で他のモデルのデータを編集する

あとで読む

スパイスラボ神部です。


実験的にですが、CakePHP で formHelper を使いながら他のモデルのデータを編集する試みをしてみましたので、共有してみます。果たしてこの方法が正しいのか?というところもあわせてですので、ツッコミあれば宜しくお願いします。


-二人羽織が好きだ! - Favorites!


コントローラとモデルの基本原則に逆らわないこと


さて、読み込みだけならご存じ var $uses に指定すればどんなモデルでも読み込めます。


そこから先、違うコントローラの中で、しかも formHelper による edit ライクな機能を実装していこうとすると問題が起こります。


1.別のユーザモデルをフォームのにセットすると、そのモデルの edit に飛んでしまう


2.User を User2 などにすると、ユーザモデルがないので formHelper による自動補完が利かない


これは不便で困ります。


私の考えた回避方法


たとえば Basic 認証をかけた Admins コントローラの中で、一般ユーザの編集モデルを作りたかったとしましょう。そういうときは


1.まず、edituser などのアクションを用意し、User データモデルの情報を ID から引っ張ってくる


2.それをいったん、Admin データモデルの ID、ユーザ ID他に代入する。


※このとき、Admin データモデルにないフィールドで、User データモデルにあるフィードでも代入可能


3.edituser アクションのビューで、モデルを Admin、フォームの action を edituser にして formHelper でフォーム作成


※IDがきっちり入力されており、$form->input で出力されているフィールドの User モデルとフィールドが合致していればフォームにあらかじめ値がセットされている状態になる。


4.edituser アクションにて、 $this->data が empty でないとき、Admin.User モデルに入ってきた値を、改めて $this->data['User'] に代入。


5.$this->User-save($this->data['User'] などとして、User データモデルに値を保存


※パスワードや created, modified などは、null すなわちなにも指定しない状態にしておけば上書きされず前回の値が使われる。


まとめ


ということで、今回は特定のデータモデルをカプセルのように使って別のユーザモデルのデータを受け渡し、なおかつ formHelper による簡単入力補完というところも実現してみました。このようなイレギュラーなやり方が認められるのかわかりませんが、とりあえず出来ましたということで共有しておきます。


-トロイの木馬が好き! - ILOVEIT(β)

 



関連記事



ブックマークに追加する この記事についてTwitterでツイート

トラックバック

このエントリーのトラックバックURL:
http://www.spicebox.jp/cgi-bin/mt/mt-tb.cgi/1046

コメント ( 2 )

Ryuji :

> 匿名さん

なんか、それで良さそうですね…無駄なエントリをあげてしまったかも。

匿名 :

>1.別のユーザモデルをフォームのにセットすると、そのモデルの edit に飛んでしまう

は、
$form->create('User', array('url' => '/controller/edituser'));
とかでは駄目なのでしょうか?

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

mixiアプリ本
4/22発売!

mixiアプリをつくろう!
OpenSocialで学ぶ
ソーシャルアプリ



(株)スパイスボックス
神部 竜二(著)

書籍情報






検索



神部竜二
ブログ執筆者の一人です。ネットの新しい話題や Web まわりのプログラミング、Web 広告について書いていきたいと思います。


About

2009年05月18日 11:29 に投稿されたエントリーのページです。

ひとつ前の投稿は「 「※ただしイケメンに限る」のクローン企画案 」です。

次の投稿は「 五月も後半だけどソーシャルアプリ関連 」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

SEO ブログパーツ  

+ インデックス数計測 +