我有以下模型:
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_id
在GrantMinimal
中设置的用户
到目前为止,我很喜欢这个框架——它给人留下了深刻的印象,来自于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);
}
}