【问题标题】:Can't populate a Select options with related model info - CakePHP无法使用相关模型信息填充选择选项 - CakePHP
【发布时间】:2012-10-25 15:11:19
【问题描述】:

用这个把我的头发拉出来,我知道这很简单,但我一直在努力解决它。作为记录,我使用的是 cakePHP 2.2。

我正在尝试使用相关模型数据填充选择输入。

基本上我有用户和用户状态。用户模型属于 UserStatus 模型。在 user/add() 函数中,我希望有一个下拉选择框,其中填充来自 UserStatus 模型的数据。

代码如下:

UsersController/Add()

$groups = $this->User->Group->find('list');
$UserStatus = $this->User->UserStatus->find('list');
$this->set(compact('groups', 'UserStatus'));

查看/用户/add.ctp

echo $this->Form->input('user_status_id', array('class' => 'span9'));

users 表中建立关系的字段是 user_status_id,它链接到 user_statuses 表中的 id。

基于上述,选择框不会填充来自 user_statuses 表的状态。有趣的是,如果我将视图代码更改为:

echo $this->Form->input('user_status_id', array('class' => 'span9'));

但是,当我这样做时,不会写入数据库。

我们将不胜感激。

提前致谢。

【问题讨论】:

    标签: cakephp


    【解决方案1】:

    options 参数应该可以解决显示问题,只要您的 User 表中有一个 user_status_id,下面的代码应该在保存时将值保存在您的 User 模型中。

    echo $this->Form->input('User.user_status_id', array('options'=>$UserStatus,'class' => 'span9'));
    

    【讨论】:

    • 如果您正确设置了其他所有内容,则无需设置选项参数。
    • 是的,但我发现查看代码时更容易理解。即使不需要。当您遇到诸如状态之类的复数问题时,它也是一个快速解决方案。
    • 我想继续从数据库而不是静态变量中填充选项,但这部分:echo $this->Form->input('User.user_status_id' 似乎可以解决所有问题!谢谢.
    【解决方案2】:

    应该是:

    $userStatus = $this->User->UserStatus->find('list');
    

    (注意小写“u”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-28
      • 2013-07-16
      • 1970-01-01
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多