Как использовать функцию getAllData ()? - PullRequest
1 голос
/ 08 февраля 2012

После того как я добавил форму и загрузил некоторые данные,

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

данные отображаются в полях формы, однако $ data пуст.Я думал, что это будет массив данных для полей, отображаемых в форме.Я что-то здесь упустил?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Вам нужно использовать это внутри функции 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
0 голосов
/ 08 февраля 2012

Я не знаю причину дизайна или функционального поведения этого, но вам нужно сначала вызвать 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 имеет тонны скрытых секретов.:)

...