我想使用Zend Form(Zend Framework 2)从数据库编辑记录。
在ZF1中我在我的控制器中做了:
$values = $table->getValues();
$form = new MyForm();
$form->populate($values);
$this->view->form = $form;
并在viewscript中:
<?php echo $this->form ?>
在ZF2中,我在我的控制器中尝试过:
$values = $table->getValues();
$form = new MyForm();
$form->populateValues($values); // form->setData($values) does not work either
return array('form' => $form);
并在我的观点中:
<?php echo $this->form()->openTag($form) ?>
<?php echo $this->formCollection($form) ?>
<?php echo $this->form()->closeTag($form) ?>
但是渲染表单,但没有数据。
这样做的正确方法是什么?
答案 0 :(得分:0)
您需要在表单中调用prepare()
,然后才能在视图脚本中打开它。例如:
<?php $form->prepare(); ?>
<?php echo $this->form()->openTag($form) ?>
<?php echo $this->formCollection($form) ?>
<?php echo $this->form()->closeTag($form) ?>
请参阅参考指南here
请注意以下几点:
prepare()方法。您必须在渲染任何内容之前调用它 视图(此函数仅用于在视图中调用,而不是在视图中调用 控制器)。
答案 1 :(得分:0)
问题是我的代码中的$table->getValues()
返回一个arrayObject而populateValues()
需要一个数组。