この例では、部門とユーザーの 2 つのモデルを使用しています。
Departments belongsTo Users (この例では、ユーザーは部門マネージャーです [null 許可]。)
FormHelper を使用して、ユーザー ID の選択を次のように定義しました。
echo $this->Form->input('user_id', array('label'=>'Department/Group Manager (leave blank if none)', 'empty' => true));
デフォルトでは、FormHelper は User.id ASC (HTML select 要素の「value」プロパティ) によって選択項目を並べ替えるようです。add.ctp フォームを使いやすくするために、User モデルの表示フィールドとして使用する "Lastname, Firstname" という仮想フィールドを作成しました。
public $virtualFields = array(
'name' => "CONCAT(User.lastName, ', ', User.firstName)"
);
public $displayField = 'name';
これはうまくいきました。残念ながら、User.id ではなく、仮想フィールドの値 (この場合は User.lastName) の昇順でレンダリングされた選択ボックス内のアイテムを並べ替えられるようにしたいと考えています。FormHelper を使用してこれを行う方法がわかりませんでした。これを行う別の方法はありますか (FormHelper ができない場合)?