【发布时间】:2012-08-25 04:26:35
【问题描述】:
我有一个编辑表单,我想在其中更新一些模型。问题是我的主要模型 Units 属于 Location(因为一个 Location 可以有很多 Units)。 cakephp 手册描述了当你的相关模型数据属于你的主模型时如何保存所有,但没有描述它是如何反向工作的。我在下面使用的代码显然不会更新 Location.address。
来自edit.ctp:
<?php
echo $this->Form->create('Unit', array('url'=>array('action' =>'edit'));
echo $this->Form->input('unitnum', array('label' => 'Unit\'s Name/Number'));
echo $this->Form->input('Location.0.address');
echo $this->Form->end('Update Property');?>
这是我的控制器代码:
function edit($id) {
$this->Unit->id = $id;
if (empty($this->data)) {
$this->data = $this->Unit->read();
} else {
if ($this->Unit->saveAll($this->data)) {
$this->Session->setFlash('Your property has been updated.');
}
}
}
注意:我也尝试过使用 echo $this->Form->input('Location.address');虽然它漂亮地为我预先填充了我的字段,但如果我更改它,它仍然不会更新位置地址。
更新 我发现,当我提交表单时,蛋糕不是更新位置地址,而是添加一个包含所有新信息的新位置!
第二次更新 另外我还发现,虽然 cake 会为 RELATED 模型数据(主模型属于)保存一条新记录,但它不会更新单元(主模型)信息。
【问题讨论】: