我现在很确定这无法做到,但我希望能澄清原因,这样我以后就可以避免类似的情况!我有一个表单,当根据用户输入提交时,它要么完成,要么需要进一步输入,其中需要将参数传递给新表单。
初始提交工作正常,并且可以在下一个表单中正常访问值!
$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 参数填充。
正如我所说,我知道它无法完成,只是想知道如果我可以将值与不填充元素值的语句并排打印,那么限制在哪里。