3

我是蛋糕的新手。我已经设置了一些东西,相关的是“用户”和“配置文件”表、控制器、模型和视图。在我profiles/add看来,我正在尝试输出一个select输入,其值为 the 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');

似乎这种事情是例行公事,所以如果我完全忽略了它,请随时通过文档链接来回答。

谢谢!

4

1 回答 1

6

成功设置选择以输出用户表中的选项,但它使用 user.id 作为值和选项文本。

find('list')默认情况下使用主键作为键,模型displayField作为值。

如果模型没有显式displayField但有一个名为titleor的字段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'
)
于 2013-03-17T22:36:35.290 回答