我有两个模型Business和User。它们与HABTM关系有关。
所有功能都与烘焙的控制器,模型和视图一起使用。
现在我正在尝试将两个模型合并为一个表单,以便用户可以使用用户信息输入商家名称。
以下是表格:
Form->create('User'); ?>
Form->input('Business.name', array('label' => __('Business name')));
echo $this->Form->input('User.email');
echo $this->Form->input('User.firstname');
echo $this->Form->input('User.lastname');
echo $this->Form->input('User.password');
echo $this->Form->input('User.phone_cell', array('type' => 'text'));
echo $this->Form->input('User.phone_home', array('type' => 'text'));
echo $this->Form->input('User.phone_work', array('type' => 'text'));
?>
Form->end(__('Submit')); ?>
我能够使其工作的唯一方法是首先保存用户,然后通过添加具有新ID的用户数组来获取用户ID并保存业务。
if ($this->User->save($this->request->data)) {
$this->request->data['User'] = array('User' => array(0 => $this->User->id));
if ($this->User->Business->save($this->request->data)) {
// User saved
} else {
// User not saved
}
} else {
$this->Session->setFlash(__('The user could not be saved. Please, try again.'));
}
我尝试了saveAll方法但没有成功。有可能优化CakePHP方式进行单次保存吗?
由于
答案 0 :(得分:0)
我能够使用名为User
和Group
的几个模型让自己工作。以下是我的代码中的一些剪辑,以显示我是如何做到的:
UsersController.php
public function edit($id = null)
{
$this->User->id = $id;
if ($this->request->is('get')) {
//On page load load the user data
$this->request->data = $this->User->read();
} else {
//Saving
if ($this->User->save($this->data)) {
//....snipped...
} else {
$this->Session->setFlash('Unable to update the user.');
}
}
//Build $groups array for form
// Only admins can assign admin rights
if ($this->isMember('Admin')) {
$this->set('groups',$this->User->Group->find('list'));
} else {
$this->set('groups',$this->User->Group->find('list',array(
'conditions' => array(
'Group.name !=' => 'Admin'
)
)));
}
//...more snipping...
}
edit.ctp(查看)
echo $this->Form->create('User', array('action' => 'edit'));
echo $this->Form->input('User.username');
echo $this->Form->input('Group',array(
'type' => 'select',
'multiple' => true,
'label' => "Group (Select multiple entries with CTRL)",
'size' => count($groups)
)
);
//More snipping
通过该示例,您如何验证输入的Business.name
是否有效并且可以与HABTM关系匹配?在这种情况下,我强制选择列表。我的模型非常简单,所以我没有包含它。
您对debug($this->data);
与debug($this->request->data)
的输出是什么?