CakePhp:根据所选用户保存用户ID

时间:2013-08-06 10:57:15

标签: cakephp cakephp-1.3

我是CakePhp的新手。我的蛋糕中有一个用户控制器和一个记录控制器。用户控制器正在保存用户的详细信息,如用户名等.Record Controller正在保存用户的其他记录。 Records Controller有一个ctp文件。在此文件中,我有一个下拉列表,显示用户控制器中的所有用户名。用户从下拉列表中选择他的名字。还有一个名为checkin的按钮。现在,我希望在用户单击CheckIn按钮时根据用户选择将用户的Id保存在数据库中。这该怎么做 ?

这是我的记录控制器功能

function record()
{
 $this->loadModel('User');
 $rec = $this->User->find('list', array('fields'=>   array('User.user_id','User.username')));
  $this->set(compact('rec'));
  $this->Record->saveField('in',date("H:i:s"));
  }
  }
  ?>

查看档案

   <?php 
   echo $this->Form->input('Select User', array('type'=>'select','options' => $rec,'empty'=>false));
   echo $form->end('CheckIn');?>

3 个答案:

答案 0 :(得分:1)

你应该采取1 -------的建议,在你自己先行之前了解CakePHP的基础知识,这将阻止你在将来陷入困境。你的问题缺乏必要的细节,所以我将做出假设。

您需要做的就是在致电save()时将用户ID传递给用户模型。如果您有一个select元素来选择用户名,我建议您这样做:

<select>
    <option value="1">First user</option>
    <option value="2">Second user</option>
</select>

其中选项的值是用户ID。然后,确保$this->request->data数组正确表示数据字段:

Array
(
    [User] => Array
    (
        [id] => 1 // From the select element on the form
        [isername] => 'Updated username'
    )
)

当你致电$this->User->save($this->request->data);时,Cake会知道你正在更新记录,因为你已经传入了身份证。

答案 1 :(得分:1)

$rec = $this->User->find('list', array('fields'=>   array('User.user_id','User.username')));

您不必为列表查询定义字段。如果模型具有显示标题集,则将使用该字段。

class User extends AppModel
{
    //...
    var $displayField = 'username';
}

// then in your controller
$this->set('users',$this->User->find('list'));

在视图中创建这些用户的下拉选择。您使用内置的select()函数。

$this->Form->select('user_id',$users);

告诉表单助手输入填充表格中的哪个字段非常重要。当表单发布到控制器时,它将显示在$this->data中(对于Cake 1.x)。标准约定(如果属于关联)将在user_id模型中使用户的字段名称Record

function record()
{
    if(!empty($this->data))
    {
        if(!$this->Record->save($this->data))
        {
            die("Failed to save...");
        }
    }
    $this->loadModel('User');
    $this->set('users',$this->User->find('list'));
}

答案 2 :(得分:0)

如果要保存用户ID,则

 $rec = $this->User->find('list', array('fields'=>   array('User.user_id','User.username')));

 $this->set(compact('rec'));

在你看来

$this->Form->input('User.user_id',array('empty'=>'Select User', 'options'=>$rec));

您可以通过这种方式在表单操作中收集它

$this->data['User']['user_id']

希望这对你有用