Php 从转发操作中填充zend_表单元素

Php 从转发操作中填充zend_表单元素,php,model-view-controller,zend-framework,zend-form,Php,Model View Controller,Zend Framework,Zend Form,我现在很确定这是不可能的,但我希望澄清原因,这样我就可以避免将来出现类似的情况!我有一个表单,当根据用户输入提交时,它要么完成,要么需要进一步输入,并且需要将一个参数传递给新表单 初始提交工作正常,在下一个表单中可以很好地访问这些值 $fooID = $foo->save($values); if($values['register'] == "true") { $this->_forward("register", "user", null, a

我现在很确定这是不可能的,但我希望澄清原因,这样我就可以避免将来出现类似的情况!我有一个表单,当根据用户输入提交时,它要么完成,要么需要进一步输入,并且需要将一个参数传递给新表单

初始提交工作正常,在下一个表单中可以很好地访问这些值

    $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参数

正如我所说,我知道这是不可能的,只是想知道如果我可以将值与不填充元素值的语句并排打印,限制在哪里。

  • 是否有可能在执行
    populate()
    后更改该值?例如:
    $form->isValid($this->_request->getPost())将设置新的表单值

  • 尝试
    var_dump($form->fooID->getValue())作为
    populate()
    之后和操作完成之前的调试行?那给你看了什么


它应该可以工作。您是否尝试过仅从预定义字符串填充fooID以查看它是否真的有效?我尝试过仅使用一个神奇的值填充字段,如:$form->populate(array('fooID'=>'10');即使这样也不行!更多的上下文可能会有所帮助:例如,您何时调用$form->isValid()?在$form->populate()之前或之后?