2

我有两个模型业务和用户。它们通过 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 方式?

谢谢

4

1 回答 1

0

我能够让它自己与几个名为Userand的模型一起工作Group。这是我的代码中的一些片段,以显示我是如何做到的:

用户控制器.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);vs.的输出是什么debug($this->request->data)

于 2013-01-04T19:56:06.547 回答