我是新来的。我已经得到了一些东西设置,相关的"用户"answers"配置文件"表,控制器,模型和视图。在我的profiles/add
视图中,我试图输出select
输入,其值为user.id
,选项文本为user.username
。最终,user.id
的值将保存在profile.user_id
中。
我已经阅读了大量的文档,并成功地设置了select
从user
表中输出选项,但它使用user.id
作为值和选项文本。
控制器:
$this->set('users', $this->Profile->User->find('list'));
视图:
echo $this->Form->input('user_id');
这似乎是例行公事,所以如果我完全忽略了它,请随意用文档链接回答。
谢谢!
成功地设置了select以输出来自用户表的选项,但是它使用了用户。Id作为值和选项文本。
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'
)