ZF2使用数据库中的数据呈现表单

时间:2013-01-28 15:11:58

标签: zend-form render zend-framework2

我想使用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) ?>

但是渲染表单,但没有数据。

这样做的正确方法是什么?

2 个答案:

答案 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()需要一个数组。