微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

CakePHP表单选择值为table.id,选择选项文本为table.textfield

我是Cake的新手.我已经设置了一些东西,相关的是“用户”和“配置文件”表,控制器,模型和视图.在我的个人资料/添加视图中,我正在尝试输出一个选择输入,其值为user.id,选项文本为user.username.最终,值user.id将保存在profile.user_id中.

我已阅读了大量文档,并成功设置了select以从用户表中输出选项,但它使用user.id作为值和选项文本.

控制器:

    $this->set('users', $this->Profile->User->find('list'));

视图:

    echo $this->Form->input('user_id');

看起来这种事情是常规的,所以如果我完全忽略它,请随意回答文档的链接.

谢谢!

解决方法:

successfully set up the select to output the options from the user tables, but it uses the user.id as both the value and the option text.

find(‘list’)认使用主键作为键,模型的displayField作为值.

如果模型没有显式的displayField但是有一个名为title或name的字段,Cake会自动选择这个字段,否则它不会猜测并只使用主键字段 – 这就是问题中发生的事情.

但是,您可以在find(‘list’)调用的结果中指定所需的字段.因此:

设置模型displayField

class User extends AppModel {

    public $displayField = 'username';

}

然后使用:

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

明确选择字段

$users = $this->User->find('list', array(
    'fields' => array('id', 'username')
));

在这两种情况下 – 结果将是例如:

array(
    1 => 'firstuser',
    ...
    76 => 'AD7six'
)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐