-6ren"> -我有一个使用 Zend-Form 的相当复杂的表单设置。在某一时刻,我使用以下方法设置隐藏输入的值: $oHidden = new Zend_Form_Element_Hidden('ratings'-6ren">
gpt4 book ai didi

zend-framework - Zend-form setValue , View 具有空值,例如 <input value ="">

转载 作者:行者123 更新时间:2023-12-02 10:23:25 25 4
gpt4 key购买 nike

我有一个使用 Zend-Form 的相当复杂的表单设置。在某一时刻,我使用以下方法设置隐藏输入的值:

$oHidden = new Zend_Form_Element_Hidden('ratings'.$k);        
$oHidden->setValue('ratings');Zend_Debug::dump($oHidden);
$this->addElements(array($oHidden));

此方法在相同形式的其他地方运行良好,但这个方法和另一个方法就像它的输出:

<input type="hidden" name="ratings1" value="" id="ratings1" />

我已经转储了 $oHidden 变量,它输出:

object(Zend_Form_Element_Hidden)#143 (29) {<br/>
...
["_value":protected] => string(7) "ratings"
["_view":protected] => NULL
["_isPartialRendering":protected] => bool(false)
}

所以它暂时设置了该值,但没有渲染它。请让我知道从哪里开始寻找此行为的原因。

谢谢,亚历克

最佳答案

问题恰恰出在 isValid() 函数上。它清除表单中的所有值,然后使用传递给它的参数重新填充它。如果参数不存在,它显然不会再出现在表单中,即使它是在前面几行明确设置的。

我的案例是登录表单中的可选“重定向”隐藏字段。这是代码(为了便于阅读而进行了简化):

$form = new Form_Login();
$redirect = $this->_getParam('redirect','/user/login/welcome');
$form->addElement('Hidden','redirect',array('value' => $redirect));

if ($this->_request->isPost() && $form->isValid($this->_getAllParams())) {
// WTF! the "request" field has no value!!!
}

解决方法是设置操作参数:

$form = new Form_Login();
$redirect = $this->_getParam('redirect','/user/login/welcome');
$this->_setParam('redirect',$redirect);
$form->addElement('Hidden','redirect',array('value' => $redirect));

if ($this->_request->isPost() && $form->isValid($this->_getAllParams())) {
// AHA! now it works!
}

我知道这个问题已经有半年了,但是哦,迟到总比不到好:D。

关于zend-framework - Zend-form setValue , View 具有空值,例如 &lt;input value ="">,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402213/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com