我很确定现在不能这样做,但我希望澄清为什么,所以我可以避免将来出现类似情况!我有一个表单,当提交时,依赖于用户输入完成或需要进一步输入需要传递给新表单的参数。
初始提交工作正常,并且可以在下一个表单中正确访问这些值!
$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参数填充该值。
正如我所说,我知道它无法完成,只是想知道如果我可以使用不填充元素值的语句并排打印值,那么限制在哪里。
答案 0 :(得分:0)
您populate()
执行后是否可以更改值?例如:$form->isValid($this->_request->getPost());
将设置新的表单值。
在var_dump($form->fooID->getValue());
之后尝试populate()
作为调试行,在操作完成之前尝试一次?这对你有什么影响?