2

hasOneそのギャラリーという既存のショーケースがあります。ギャラリーは、foreignKeyshowcase_idが適切な値に設定された状態で既に存在します。ギャラリーには、Showcase-controller を介して更新しようとするテキスト フィールドがあります。私が得た結果は、元のエントリの更新ではなく、元のエントリに沿った追加のギャラリー エントリです。

私は何を間違っていますか?

私の Showcase ビューは次のようになります。

echo $form->create('Showcase', array('action'=>'update'));

echo $form->input('Showcase.id', array('type'=>'hidden', 'value'=>$showcase['Showcase']['id']));

echo $form->input('Gallery.fulltext', array('type'=>'textarea', 'between'=>'<br>', 'value'=>$showcase['Gallery']['fulltext']));

echo $form->submit('Submit text');

echo $form->end();

私のショーケースコントローラ機能:

$uses = array('Showcase','Gallery')

function update(){

if(!empty($this->data)){

$this->Showcase->saveAll($this->data, array('validate'=>'first'));

}

}

ショーケース モデル$hasOne = 'Gallery'とギャラリー モデル$belongsTo = 'Showcase'

$this->Showcase->saveAll()ここで使用する適切な関数はありますか? それとも、Gallery コントローラ内の Gallery エントリを更新する必要がありますか? それはおそらくうまくいくでしょうが、とてもエレガントではないようです。

4

1 に答える 1

4

エレガントではないという意味がわかります。hasOneの関係があることに気づき、既存のレコードを更新していただければ幸いです。

ただし、現在フレームワーク内では、ビューに追加するのが最善のオプションだと思いますecho $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));

補足として。$showcase代わりに割り当てるかどうかを現在定義しているコントローラーアクションでは、フォーム入力で$this->data常に指定する必要はありません。'value' => ...

于 2010-01-10T22:45:02.610 に答える