首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend-form setValue,视图具有空值,如<input value="“>

Zend-form setValue,视图具有空值,如<input value="“>
EN

Stack Overflow用户
提问于 2010-12-10 03:26:30
回答 2查看 6.5K关注 0票数 2

我有一个使用Zend-Form的相当复杂的表单设置。在某一点上,我使用以下命令设置隐藏输入的值:

代码语言:javascript
复制
$oHidden = new Zend_Form_Element_Hidden('ratings'.$k);        
$oHidden->setValue('ratings');Zend_Debug::dump($oHidden);
$this->addElements(array($oHidden));

这个方法在相同表单的其他地方工作得很好,但是这个和另一个就像它的输出:

代码语言:javascript
复制
<input type="hidden" name="ratings1" value="" id="ratings1" />

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

object(Zend_Form_Element_Hidden)#143 (29) {

... ["_value":protected] => string(7) "ratings" ["_view":protected] => NULL ["_isPartialRendering":protected] => bool(false) }

所以它会在一段时间内设置好这个值,但是不会渲染它。请让我知道从哪里开始寻找这种行为的原因。

谢谢,阿列克

EN

回答 2

Stack Overflow用户

发布于 2011-06-22 21:21:47

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

我的案例是登录表单中一个可选的“重定向”隐藏字段。以下是代码(为了可读性而简化):

代码语言:javascript
复制
$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!!!
}

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

代码语言:javascript
复制
$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。

票数 5
EN

Stack Overflow用户

发布于 2011-01-28 04:36:14

代码语言:javascript
复制
$hidden = new Zend_Form_Element_Hidden(array('name' => 'ratings', 'value' => 'ratings'));

试试看!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4402213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档