我想知道如何实现一个允许用户在相关模型中输入多个(未知)数量的记录的视图。例如,我有两个称为组和用户的模型。我想实现一个允许我创建一个组的视图(这很容易),并且在同一视图中,我可以创建属于该组的多个用户。如何同时在多个表中创建新记录?
我希望我的问题是清楚的,如果不只是让我知道..
我想知道如何实现一个允许用户在相关模型中输入多个(未知)数量的记录的视图。例如,我有两个称为组和用户的模型。我想实现一个允许我创建一个组的视图(这很容易),并且在同一视图中,我可以创建属于该组的多个用户。如何同时在多个表中创建新记录?
我希望我的问题是清楚的,如果不只是让我知道..
在后端,用白水($数据),准备像你的数据:
// Prepare the data for the Group hasMany User
$data = array('Group' => array(
'id' => 5,
'name' => 'my group',
'User' => array(
array('id'=>1,'username' => 'john'),
array('id'=>2,'username' => 'pachelbel'))
)
)
// OR if it's being passed in, just use $this->data in place of $data
// Save all the data
$this->Group->saveAll($data)
在看来,要准备好您的形式,使得它具有正确array'd键:
<form id="GroupCreateForm" method="post" action="/groups/create">
<input type="hidden" name="data[Group][id]" value="5" />
<input type="hidden" name="data[Group][name]" value="my group" />
<input type="hidden" name="data[Group][User][0][id]" value="1" />
<input type="hidden" name="data[Group][User][0][username]" value="john" />
<input type="hidden" name="data[Group][User][1][id]" value="2" />
<input type="hidden" name="data[Group][User][1][username]" value="pachelbel" />
</form>
如果要动态用户添加到形式,可以考虑使用JavaScript来注入新的input
埃尔对此语句。
有关更多信息,请参阅this。
你可以使用Cake的表单助手更聪明地做到这一点。在上面的例子中你可以重写这样的:
<?php
echo $this->Form->Create('Group');
echo $this->Form->input('Group.id');
echo $this->Form->input('Group.name');
for($i=0;$i<10;$i++){
$this->Form->input('User.'.$i.'.id');
$this->Form->input('User.'.$i.'.name');
}
?>
这样你就可以从自动处理错误以及字段值人口受益。
Thanx为您的答复。我在cakephp的食谱中看过那篇文章。那么前端怎么样?我如何实现这个视图? – dejavu 2010-07-17 08:21:08
检查编辑,看看是否有帮助。 – ash 2010-07-17 08:34:49
这很好。我可以从这里休息。 我很感谢你的帮助Jasie。 – dejavu 2010-07-17 08:38:44