我想知道如何實現一個允許用戶在相關模型中輸入多個(未知)數量的記錄的視圖。例如,我有兩個稱爲組和用戶的模型。我想實現一個允許我創建一個組的視圖(這很容易),並且在同一視圖中,我可以創建屬於該組的多個用戶。如何同時在多個表中創建新記錄?
我希望我的問題是清楚的,如果不只是讓我知道..
我想知道如何實現一個允許用戶在相關模型中輸入多個(未知)數量的記錄的視圖。例如,我有兩個稱爲組和用戶的模型。我想實現一個允許我創建一個組的視圖(這很容易),並且在同一視圖中,我可以創建屬於該組的多個用戶。如何同時在多個表中創建新記錄?
我希望我的問題是清楚的,如果不只是讓我知道..
在後端,用白水($數據),準備像你的數據:
// 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