从Model内部的hasOne设置的下拉值和defaultValue


Dropdown values and defaultValue set from hasOne inside Model

我有以下模型:

class Model_GrantMinimal extends Model_Table {
    public $table='grant';
    function init() {
        parent::init();
        $this->hasOne('User');
        $this->getField('id')->hidden(true);
        $this->getField('user_id')->hidden(true);
        $this->addField('grant_number');
        $this->addField('grant_name');
    }
}

在页面内,我有以下代码:

$grant=$this->add('Model_GrantMinimal');
$grant->load($id);
$user=$grant->ref('user_id');
        $field = $grantForm->addField('Dropdown','Manager');
        $field->setModel($user);
        $field
            ->validateNotNull()
            ->add('Icon',null,'after_field')
            ->set('arrows-left3')
            ->addStyle('cursor','pointer')
            ->js('click',$grantForm->js()->reload())
        ;

一切都几乎完美-我如何确保下拉列表(php中的$field)链接到整个表单,即当我更改下拉列表中的值时,该值将传递到$grantForm->onSubmit-以及我如何确保该下拉列表的defaultValue(预选值)是由user_idGrantMinimal 中设置的用户

到目前为止,我很喜欢这个框架——它给人留下了深刻的印象,来自于MVVM和MVC非常常见的.NET框架,尤其是与最新的WPF相关的框架。与旧的HTML/PHP编写方式相比,这是一种享受,只需要一段时间就可以完全理解什么是什么。

经过几个小时的调试跟踪后发现:

class Model_GrantMinimal extends Model_Table {
    public $table='grant';
    function init() {
        parent::init();
        $this->hasOne('User');
        $this->getField('id')->hidden(true);
        $this->getField('user_id')->hidden(true);
        $this->addField('grant_number');
        $this->addField('grant_name');
        $this->hasOne('User');
        $this->getField('user_id')->caption('Manager')->hidden(false);
    }
}