0

Zend Form (Zend Framework 2) を使用してデータベースのレコードを編集したいと考えています。

ZF1 では、コントローラーで次のことを行いました。

$values = $table->getValues();
$form = new MyForm();
$form->populate($values);
$this->view->form = $form;

そしてビュースクリプトで:

<?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) ?>

ただし、データなしでフォームをレンダリングします。

これを行う正しい方法は何ですか?

4

2 に答える 2

0

問題は$table->getValues()、私のコードでは arrayObject が返されるのに対しpopulateValues()、配列が期待されることでした。

于 2013-01-28T15:49:46.503 に答える
0

prepare()ビュースクリプトでフォームを開く前に、フォームを呼び出す必要があります。例えば:

<?php $form->prepare(); ?>
<?php echo $this->form()->openTag($form) ?>
<?php echo $this->formCollection($form) ?>
<?php echo $this->form()->closeTag($form) ?>

リファレンスガイドはこちら

次の点に注意してください。

prepare() メソッド。ビューで何かをレンダリングする前に呼び出す必要があります (この関数は、コントローラーではなく、ビューでのみ呼び出されることを意図しています)。

于 2013-01-28T15:34:57.470 に答える