0

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

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

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

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

4

1 回答 1

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

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

于 2009-09-20T01:57:30.230 回答