在本例中,我使用两个模型:部门和用户。
部门属于用户(在这种情况下,用户是部门经理 [允许为空]。)
使用 FormHelper,我简单地将用户 ID 的选择定义为:
echo $this->Form->input('user_id', array('label'=>'Department/Group Manager (leave blank if none)', 'empty' => true));
默认情况下,FormHelper 似乎按 User.id ASC(HTML 选择元素的“值”属性)对选择项进行排序。为了使 add.ctp 表单中的内容更好,我创建了一个虚拟字段作为“姓氏,名字”,用作用户模型的显示字段:
public $virtualFields = array(
'name' => "CONCAT(User.lastName, ', ', User.firstName)"
);
public $displayField = 'name';
这很好用。不幸的是,我希望能够按虚拟字段的值(或在本例中为 User.lastName)而不是按 User.id 对呈现的选择框中的项目进行排序。我无法找到使用 FormHelper 的方法。有没有其他方法可以做到这一点(如果 FormHelper 做不到)?