2017-02-03 7 views
0

Я создаю валидатор адресов электронной почты ZF2 через фабрику, которая имеет 2 части, одна проверяет, находится ли emaill в БД, два: проверьте электронную почту. Прблема заключается в том, что мой валидатор NoObjectExists работает очень хорошо, но акатальный валидатор адресов электронной почты не выполняет (валидатор распознает «dsfsfhsadjkfnaskl» как действительный адрес электронной почты). Вот мой код, может быть, вы, ребята, можете определить, что с ним не так?ZF2 EmailAddress validator

$factory = new \Zend\InputFilter\Factory(); 

    $input = $factory->createInput(array(
     'name' => 'email', 
     'required' => false, 
     'filters' => array(
      0 => array(
       'name' => 'Zend\Filter\StringTrim', 
       'options' => array(), 
      ), 
     ), 
     'validators' => array(
      0 => array(
        'name' => '\DoctrineModule\Validator\NoObjectExists', 
        'options' => array(
         'object_repository' => $this, 
         'fields' => array('email'), 
       ), 
      1 => array(
        'name' => '\Zend\Validator\EmailAddress', 
        'options' => array(
         'allow' => \Zend\Validator\Hostname::ALLOW_DNS, 
         'domain' => true, 
        ), 
       ), 
      ), 
     ), 
    )); 

    return $input; 
+0

Я на самом деле пытался дать несколько советов, и я положил драгоценное время при добавлении ответа на ваш вопрос. Мой ответ действительно получил одобрение кого-то другого, что означало, что это считалось полезным другим. Вместо того, чтобы выразить некоторую признательность и поблагодарить меня, вы вместо этого решили понизить мой ответ. Не очень уважительное отношение к ИМО. Ваш вопрос на самом деле не применим к [StackOverflow mcve] (https://stackoverflow.com/help/mcve), и вы должны быть счастливы, люди даже читают его. Я удалил свой ответ, поэтому вы получили то, что хотели, но не ожидаете от меня никакой помощи в будущем. Хорошего дня! – Wilt

ответ

2

У вас есть ошибка при вложении массива. Вы не закрываете содержащий валидатор NoObjectExists, поэтому средство проверки электронной почты вставляется внутри.

Попробуйте следующее:

$factory = new \Zend\InputFilter\Factory(); 

    $input = $factory->createInput(array(
     'name' => 'email', 
     'required' => false, 
     'filters' => array(
      0 => array(
       'name' => 'Zend\Filter\StringTrim', 
       'options' => array(), 
      ), 
     ), 
     'validators' => array(
      0 => array(
       'name' => '\DoctrineModule\Validator\NoObjectExists', 
       'options' => array(
        'object_repository' => $this, 
        'fields' => array('email'), 
       ), 
      ), 
      1 => array(
       'name' => '\Zend\Validator\EmailAddress', 
       'options' => array(
        'allow' => \Zend\Validator\Hostname::ALLOW_DNS, 
        'domain' => true, 
       ), 
      ), 
     ), 
    )); 

    return $input; 
+0

О, это было глупо со мной, thnx для быстрого места. – Auris

+0

@Auris, если вы привыкли выравнивать свои массивы, вы могли бы предотвратить такие проблемы в будущем. – Wilt

+0

Да, это то, что обычно делают, но при быстром скопировании эти вещи иногда проскальзывают :) во всяком случае, thnx. – Auris

 Смежные вопросы

  • Нет связанных вопросов^_^