2010-01-10 63 views
2

我已经有一个现有的展示hasOne画廊。 图库已经存在,外键showcase_id设置为正确的值。 图库有一个文本字段,我尝试通过展示控制器进行更新。 我得到的结果是沿原始图片的额外图库条目,而不是原始条目的更新。更新hasone关系行为奇怪(cakephp)

我在做什么错?

我展示视图如下所示:

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()在这里使用的正确功能?或者我可能需要更新图库控制器中的图库条目?这可能会起作用,但看起来很不雅。

回答

4

我可以看到你的意思是不优雅,如果它意识到你有一个hasOne关系,并因此更新任何现有记录将是很好的。

但是,目前在框架内,我认为您最好的选择是将echo $form->input('Gallery.id', array('type'=>'hidden', 'value'=>$showcase['Gallery']['id']));添加到您的视图。

作为一个侧面说明。在当前正在定义$showcase的控制器操作中,如果您将其分配给$this->data,则在表单输入中不需要始终指定'value' => ...

+0

优秀,完美的作品。 – 2010-01-12 08:21:59