-1

我是 CakePhp 的新手。我的蛋糕中有一个用户控制器和一个记录控制器。用户控制器正在保存用户的详细信息,如用户名等。记录控制器正在保存用户的其他记录。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');?>
4

3 回答 3

1

你应该听从 1------- 的建议,在你超越自己之前学习 CakePHP 的基础知识,它会阻止你在未来卡在这些点上。你的问题缺乏必要的细节,所以我将做出假设。

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

<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 会知道您正在更新一条记录,因为您传入了 ID。

于 2013-08-06T11:23:19.623 回答
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)。标准约定(如果 a 属于关联)将user_idRecord模型中创建用户的字段名称。

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'));
}
于 2013-08-06T13:55:20.493 回答
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']

希望这对你有用

于 2013-08-07T07:42:23.480 回答