function init(){
parent::init();
$f = $this->add('Form');
$f->addField('dropdown', 'Label:')->setModel('User');
}
したがって、このコードは、モデルUserに関連付けられたテーブルの値が入力されたドロップダウンリストを出力しますが、値はモデルの名前フィールドのものになります。
モデルの別のフィールドを使用してこれを設定する方法はありますか?
function init(){
parent::init();
$f = $this->add('Form');
$f->addField('dropdown', 'Label:')->setModel('User');
}
したがって、このコードは、モデルUserに関連付けられたテーブルの値が入力されたドロップダウンリストを出力しますが、値はモデルの名前フィールドのものになります。
モデルの別のフィールドを使用してこれを設定する方法はありますか?
直接的な方法はありません。まず、ドロップダウンの代わりに「参照」タイプを使用する必要はありませんか?
第二に、無料はその方法です:
class Model_User_BySurname extends Model_User {
public function getListFields(){
return array('id'=>'id','surname'=>'name');
}
}
その後さらに:
$form->addField('reference','Label')->setModel('User_BySurname');
もちろん、getListFieldsで使用されるある種の「setNameField('surname')」関数と非表示のプロパティを作成することにより、このフィールドをモデルで再定義可能にすることができます。
これは変更されており、これを行う方法を理解するのに少し時間がかかりました。
class Model_MyModel extends SQL_Model {
public function init() {
parent::init();
$this->addField('titleField');
}
public function getTitleField() {
return 'titleField';
}
}
$form->addField('dropdown', 'Label')->setModel('MyModel');