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


CakePHP form select value as table.id, select option text as table.textfield

我是新来的。我已经得到了一些东西设置,相关的"用户"answers"配置文件"表,控制器,模型和视图。在我的profiles/add视图中,我试图输出select输入,其值为user.id,选项文本为user.username。最终,user.id的值将保存在profile.user_id中。

我已经阅读了大量的文档,并成功地设置了selectuser表中输出选项,但它使用user.id作为值和选项文本。

控制器:

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

视图:

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

这似乎是例行公事,所以如果我完全忽略了它,请随意用文档链接回答。

谢谢!

成功地设置了select以输出来自用户表的选项,但是它使用了用户。Id作为值和选项文本。

find('list')将默认使用主键作为键,并使用模型的displayField作为值。

如果一个模型没有显式的displayField,但有一个名为titlename的字段,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'
)