【发布时间】:2011-06-03 13:19:13
【问题描述】:
我无法禁用 Zend_Form 中的填充值。
我有自己的表单类。使用隐藏的令牌元素,我想在每次调用(或重新发布)表单时动态设置随机值。我认为 setValue 可以胜任。
class MY_Form_Test extends Zend_Form {
public function init() {
...
$this->addElement('hidden', 'token');
$this->getElement('token')->setValue(uniqid('',true));
...
}
但是: 当我有这样的简单控制器时。 Zend 自动填充旧的隐藏值,除了生成新值。
$form = new JC_Form_Test();
if($form->isValid($_POST)){
// Action ...
}
else{
// Error
}
解决方案: 我找到的唯一解决方案是在 Controler 和 isValid 方法之后调用 setValue。例如。在错误块中。
问题: 有没有办法直接在表单类中设置元素值,或者在表单类中或在调用 isValid() 之前禁用填充值?
【问题讨论】:
-
您是否考虑过使用 Zend_Form_Element_Hash 而不是创建自己的令牌?