4

アプリケーション用に Zend Framework 2 でフォームを作成したいのですが、すべてが整っており、フォームが表示されていますが、データベースから取得した初期フォーム値をバインドできないという問題があります。

$myUserDetails = <details of my user coming from DB>;
$form = $form->bind($myUserDetails); //This should set the values for the form to display but it doesnt

以下に示すように、私の表示ロジックは単純です

$form = $this->form;
$form->setAttribute('action', 
$this->url('<routename>',array('action'=>'<actionname>')));
$form->prepare();
echo $this->form()->openTag($form) . PHP_EOL;
echo $this->formRow($form->get('email_id')) . PHP_EOL;
echo $this->formRow($form->get('dob')) . PHP_EOL;
echo $this->formRow($form->get('gender')) . PHP_EOL;
echo $this->formRow($form->get('user_page_name')) . PHP_EOL;
echo $this->formInput($form->get('submit')) . PHP_EOL;
echo $this->form()->closeTag($form) . PHP_EOL;

今、コントローラーアクションでフォームにバインドするオブジェクトからデータを設定しようとしました

$myUserDetails = <details of my user coming from DB>;
$form = $form->bind($myUserDetails);
$data = $myUserDetails->getArrayCopy();
$form->setData($data['data']);

これは何とか機能しているようで、ビューに値が表示されています。だから、最初のアプローチで何が間違っていたのか知​​りたいだけですか?前もって感謝します :)

4

1 に答える 1

3

@Stoyan Dimov のおかげで問題が解決しました。基本的には、インデックス「データ」で囲まれた配列を直接返していたので、モデルの getArrayCopy 関数を使用していました

だから私は getArrayCopy をに変更しました

public function getArrayCopy() {
        $data = get_object_vars($this);
        return $data['data'];
    }

そして出来上がり。

ありがとう、ストヤン・ディモフ

于 2013-04-03T10:31:19.317 に答える