0

これができないことは今ではかなり確信していますが、その理由を明確にしていただければ、将来同様の状況を回避することができます。ユーザー入力に応じて送信すると、新しいフォームに渡す必要のあるパラメーターを使用して、入力が完了するか、さらに入力が必要になるフォームがあります。

最初の送信は正常に機能し、次のフォームで値に正常にアクセスできます。

    $fooID = $foo->save($values);
    if($values['register'] == "true")
    {
      $this->_forward("register", "user", null, array('fooID' => $fooID));
    }else{
      $this->_redirect('/feedback/thanks');
    }

転送先のアクションで次のようにすると、正しいIDが画面に表示されます。

if($this->_getParam('fooID') != null){
    echo "FOO: ".$this->_getParam('fooID');
}

しかし、何らかの理由で、このアクションで初期化された$ formに要素を追加することも、既存のフィールドの値に任意の値を入力することもできません。

$form->populate(array('fooID' => $this->_getParam('fooID')));

上記は単に何もせず、値は入力されません。参考までに、要素は次のようにインスタンス化されます。

     $this->addElement('hidden', 'fooID', array(
        'decorators' => $this->_noElementDecorator,
        'validators' => array(
            'Digits'
        ),
        'required' => true
    ));

ただし、奇妙なことに、非表示要素の名前としてfooIDをidだけに変更すると、値には前のフォーム送信ページのurlパラメーターが入力されます。

私が言ったように、それはできないことを知っていますが、要素の値を入力しないステートメントと値を並べて印刷できるかどうか、制限はどこにあるのか疑問に思います。

4

1 に答える 1

0
  • 実行後に値を変更している可能性はありますpopulate()か?例として:$form->isValid($this->_request->getPost());新しいフォーム値を設定します。

  • の後で、アクションが完了する前に1回var_dump($form->fooID->getValue());、デバッグラインとして試してみてください。populate()それはあなたに何を示していますか?

于 2009-09-20T01:57:30.230 に答える