从转发的操作中填充zend_form元素

时间:2009-09-20 00:58:49

标签: php model-view-controller zend-framework zend-form

我很确定现在不能这样做,但我希望澄清为什么,所以我可以避免将来出现类似情况!我有一个表单,当提交时,依赖于用户输入完成或需要进一步输入需要传递给新表单的参数。

初始提交工作正常,并且可以在下一个表单中正确访问这些值!

    $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参数填充该值。

正如我所说,我知道它无法完成,只是想知道如果我可以使用不填充元素值的语句并排打印值,那么限制在哪里。

1 个答案:

答案 0 :(得分:0)

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

  • var_dump($form->fooID->getValue());之后尝试populate()作为调试行,在操作完成之前尝试一次?这对你有什么影响?