Php 如何在zf2中验证控制器中的两个字段

Php 如何在zf2中验证控制器中的两个字段,php,zend-framework,Php,Zend Framework,表单中有两个字段selectbox1和selectebox2,我想验证它们的值是否相同。如果它们具有相同的值,则返回表单并显示错误消息。我无法进行验证 在控制器中: $know_lang = $form->get('language_help')->getValue(); $need_lang = $form->get('language_need')->getValue(); if($know_lang == $need_lang){ $form->g

表单中有两个字段selectbox1和selectebox2,我想验证它们的值是否相同。如果它们具有相同的值,则返回表单并显示错误消息。我无法进行验证

在控制器中:

$know_lang = $form->get('language_help')->getValue();
$need_lang = $form->get('language_need')->getValue();

 if($know_lang == $need_lang){
    $form->get('language_need')->setMessages(array('Please Select different language'));
   return false;
  }

是的,我找到了解决办法

内部控制器

试试这个

try {
     $this->checkEmailExist($need_lang,$know_lang);
     } catch (\Exception $e) {
        $form->setMessages(array(
                         'language_help' => array($e->getMessage())
                     ));
       return new ViewModel(array(
       'form' => $form
      ));
    }
再做一个功能

public function checkEmailExist($email){
        // Your Db Query
        if($row) {
            throw new \Exception("Email already exist");
        }
        return true;
    }

是的,我找到了解决办法

内部控制器

试试这个

try {
     $this->checkEmailExist($need_lang,$know_lang);
     } catch (\Exception $e) {
        $form->setMessages(array(
                         'language_help' => array($e->getMessage())
                     ));
       return new ViewModel(array(
       'form' => $form
      ));
    }
再做一个功能

public function checkEmailExist($email){
        // Your Db Query
        if($row) {
            throw new \Exception("Email already exist");
        }
        return true;
    }

您可以使用zf2验证器显示您为验证添加的代码这是相同的,但我想知道如何获得它@好的。您的代码看起来是正确的。到底发生了什么?消息没有显示吗?除了返回false。您必须将表单传递给视图。返回['form'=>$form];您可以使用zf2验证器显示您为验证添加的代码这是相同的,但我想知道如何获得它@好的。您的代码看起来是正确的。到底发生了什么?消息没有显示吗?除了返回false。您必须将表单传递给视图。返回['form'=>$form];