如何使用getAllData()函数?

时间:2012-02-07 22:38:57

标签: atk4

添加表单并加载一些数据后,

$f=$this->add('MVCForm');
$f->setModel('Model')->loadData(1);
$data=$f->getAllData();

数据确实显示在表单的字段中,但$ data为空。我以为这将是表单中显示的字段的数据数组。我在这里错过了什么吗?

2 个答案:

答案 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