【问题标题】:Zend Form Field set Validator to invalidZend 表单字段将验证器设置为无效
【发布时间】:2011-06-22 09:24:16
【问题描述】:

如何将表单域从控制器设置为无效?

例子:

$form->getElement('name')->set.... Validator to FALSE

或类似的东西???

部分代码:

    if(....){
    $form->getSubForm('sub_form_name')->getElement('element_name')->addError('some error message');
    }


    if($form->isValid($this->getRequest()->getPost())) {
//Form is going to be valid and execute this statment
    }

我也尝试过:markAsError() 和 hasError();但不工作:(

【问题讨论】:

  • 为什么你设置了控制器的无效文件?表单上有验证器可用于!
  • if ($form->isValid( null )) { //如果表单有任何验证器,它肯定会失败...}
  • markAsError() 应该可以工作。您确定您的 if (....) 正在按预期执行吗?
  • 是的,我将此元素标记为错误,但 $form->isValid() 仍然为真!??!
  • markAsError() 工作,但我想设置为表单而不是子表单......。

标签: php zend-framework forms validation


【解决方案1】:

如果你在你的元素上使用任何 addError...() 或 setError...() ,它应该将验证标志设置为无效,或者文档说

Zend_Form_Element.addError(string $message)

添加错误消息并将元素标记为验证失败

【讨论】:

  • 好的,但是我向这个元素添加了错误,但之后我有$form->isValid() 验证并且添加了错误的元素仍然有效?怎么了?
  • 发帖有问题,请查收
【解决方案2】:

一点点 POGramation。 :) 不是最好的方法,但效果很好。

            $vazio = false;
        if(is_array($nomes)){
      $vazio = true; 
              $form->addError("NomeIsArray");
        }

        if(!$vazio && $form->isValid($post)){

            }

【讨论】:

  • 实际上要使其以首选方式工作,我们应该检查 $vazio 作为第二种方式,以使 ->isValid 发挥作用。 if(form->isValid($post) && !$vazio) 它很脏,但在我看来,这似乎是目前唯一的选择。 +1 提示。
猜你喜欢
  • 1970-01-01
  • 2018-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多