添加表单并加载一些数据后,
$f=$this->add('MVCForm');
$f->setModel('Model')->loadData(1);
$data=$f->getAllData();
数据确实显示在表单的字段中,但$ data为空。我以为这将是表单中显示的字段的数据数组。我在这里错过了什么吗?
答案 0 :(得分:0)
我不知道这个设计或功能行为背后的原因,
但您需要先调用表单loadData()
。
修改您提供的代码:
$f=$this->add('MVCForm');
$m=$f->setModel('Employee')->loadData(1);
$f->loadData(); // add this call
$d=$f->getAllData();
$b=$this->add('Button')->set('Show Me The Data');
$b->js('click')->univ()->alert(var_export($d,true));
因此您可以检索模型加载的数据。
我猜这个函数在调用getAllData()
或者可能有一个更短的方式,ATK有很多隐藏的秘密。 :)
答案 1 :(得分:0)
你需要在isSubmitted()函数中使用它。 isSubmitted将自动调用loadData()。这是典型用法:
$form=$this->add('Form');
$form->addField('line','test');
$form->set('test','default value');
$form->addSubmit('Show me the data');
if($form->isSubmitted()){
$data = $form->getAllData();
$form->js()->alert(var_export($d,true))->execute();
// execute at the end is important!
// it will also stop execution.
}
$this->add('OtherElements'); // other stuff on the page,
// which we don't need for form submission logic