これができないことは今ではかなり確信していますが、その理由を明確にしていただければ、将来同様の状況を回避することができます。ユーザー入力に応じて送信すると、新しいフォームに渡す必要のあるパラメーターを使用して、入力が完了するか、さらに入力が必要になるフォームがあります。
最初の送信は正常に機能し、次のフォームで値に正常にアクセスできます。
$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パラメーターが入力されます。
私が言ったように、それはできないことを知っていますが、要素の値を入力しないステートメントと値を並べて印刷できるかどうか、制限はどこにあるのか疑問に思います。