2016-04-18 7 views
0

Сравнивать валидацию действие странное - неважно, электронные письма никогда не совпадают, и ошибка отображается постоянно.Yii2 - валидация сравнить действуя странно

Это код для проверки:

public function rules() 
    { 
     return [ 

      [['first_name', 'last_name', 'email', 'conf_email'], 'required'], 
      ['title', 'match', 'pattern' => '/^[a-zA-Z]{0,100}$/', 
       'message' => 'Title must contain only letters.'], 
      [['first_name', 'last_name'], 'match', 'pattern' => '/^[a-zA-Z]{0,45}$/', 
       'message' => 'The {attribute} must contain only letters.'], 
      [['email', 'first_name', 'last_name'], 'trim'], 
      [['email', 'conf_email'], 'email'], 
      ['email', 'string', 'max' => 255], 
      ['email', 'UniqueValidator'], 
      ['conf_email', 'compare', 'compareAttribute'=>'email', 'skipOnEmpty' => false, 
       'message' => 'Emails do not match.'], 
     ]; 
    } 

И код формы:

<?php 

use yii\helpers\Html; 
use yii\widgets\ActiveForm; 
use yii\helpers\Url; 

$form = ActiveForm::begin([ 
     'action' => Url::toRoute([ 
      'team/ajax-add-team-member', 
      'id'  => $team->idteam, 
      'portalID' => $portal->idportal 
     ]), 
     'enableAjaxValidation' => true, 
     'validationUrl'  => '/team/team-validation', 
     'id'     => 'team-invite-form', 
     'options'    => [ 
      'class' => 'clearfix' 
     ] 
]) ?> 

<div class="col-md-12"> 
    <div class="row"> 
     <div class="col-md-2 col-sm-2 col-xs-12"> 
      <?php echo $form->field($model, 'title')->textInput() ?> 
     </div> 
     <div class="col-md-5 col-sm-5 col-xs-12"> 
      <?php echo $form->field($model, 'first_name')->textInput() ?> 
     </div> 
     <div class="col-md-5 col-sm-5 col-xs-12"> 
      <?php echo $form->field($model, 'last_name')->textInput() ?> 
     </div> 
    </div> 
</div> 

<div class="col-md-12"> 
    <?php 
     echo $form->field($model, 'email')->textInput(); 
     echo $form->field($model, 'conf_email')->textInput(); 
     echo $form->field($model, 'is_medical_professional')->checkbox(); 
    ?> 
</div> 

<button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button> 
<?php 
    echo Html::submitButton('Send', ['id' => 'add-team-member-form-btn', 'class' => 'btn btn-default']); 
    ActiveForm::end(); 
?> 

Что здесь происходит o.o?

+2

Я вижу, что вы обмениваете электронную почту, но не conf_email, попробуйте обрезать оба или ни одного. – Gramotei

+0

Как указано, адрес электронной почты должен быть уникальным (почему он должен быть уникальным вообще?). И вы уверены в названии, имени и фамилии? Правила даже не допускают пробелов. Поэтому я подозреваю, что у вас разные типы ошибок, но вы думаете, что это вызвано только правилом сравнения. Или вы уверены в ошибке? Какую ошибку вы получаете? – robsch

+0

Можете ли вы показать полную модель и код действия? – Alex

ответ

0

Тиис линия выглядит странно:

['email', 'UniqueValidator'], 

Попробуйте использовать ['email', 'unique'], вместо

Если это не поможет - предоставить более подробную информацию. С какой именно ошибкой вы столкнулись?

+0

Ничего не изменилось. Ошибка: ** Письма не совпадают **. – Sasha

+0

@Sasha Попробуйте удалить опцию '' skipOnEmpty '=> true' – Hutsi