我是Cake的新手。我已经设置了一些东西,相关的是"用户"和#"个人资料"表,控制器,模型和视图。在我的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');
看起来这种事情是常规的,所以如果我完全忽视它,请随意回答文档的链接。
谢谢!
答案 0 :(得分:6)
默认情况下,成功设置了select以从用户表中输出选项,但它使用user.id作为值和选项文本。
find('list')
将使用主键作为键,并将模型的displayField
作为值。
如果模型没有明确的displayField
,但有一个名为title
或name
的字段,Cake会自动选择此字段,否则它将无法猜测并仅使用主要字段关键领域 - 这就是问题中发生的事情。
但是,您可以在find('list')
来电的结果中指定所需的字段。因此:
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'
)