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

标签 zend-framework zend-form setvalue

我有一个使用 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/

相关文章:

scripting - Zend Form - 从表单类中提取标签值以在 View 脚本中显示的方法?

ios - Objective-C:setValue:Key:xposition的值

c# - 反射性能 - 创建委托(delegate)(属性 C#)

php - 是否可以在 Zend Framework 中获取所有设置的 View 变量?

php - 为什么会出现此错误以及如何修复它?

zend-framework - 关于存储库的域驱动设计问题

php - 如何在使用 PHP 调试在 Visual Code 中调试时设置变量值?

php - 在 Zend 框架中使用 gmail 发送电子邮件

zend-framework - 如何生成表单的子表单 - Zend Framework

orm - 使用 Zend Form 保存包含 ObjectSelect 元素的 Doctrine 2 实体