2016-09-05 1 views
1

Это моя форма:Yii2 изготовления флажок требуется не работает

<?php $form = ActiveForm::begin(); ?> 

<?php echo $form->field($invite, 'email')->textInput([ 
    'id' => 'register-email', 
    'placeholder' => Yii::t('UserModule.views_auth_login', 'email')]); 
?> 

<?php echo $form->field($invite, 'check')->checkbox([ 
    'id' => 'check', 
    'uncheck' => null])->label(
      Yii::t('UserModule.views_auth_login', 'I have read and accept') . ' <a href="#">' 
      . Yii::t('UserModule.views_auth_login', 'Terms & Conditions') . '</a> ' 
      . Yii::t('UserModule.views_auth_login', 'and') 
      . ' <a href="#">' . Yii::t('UserModule.views_auth_login', 'Privacy Policy') 
      . '</a>' . '.'); 
?> 
    <hr> 

    <?php 
     echo \humhub\widgets\AjaxButton::widget([ 
      'label' => Yii::t('UserModule.views_auth_login', 'Register'), 
      'ajaxOptions' => [ 
      'type' => 'POST', 
      'beforeSend' => new yii\web\JsExpression('function(){ setModalLoader(); }'), 
      'success' => 'function(html){ $("#globalModal").html(html); }', 
      'url' => Url::to(['/user/auth/login']), 
     ], 
     'htmlOptions' => [ 
      'class' => 'btn btn-primary', 'id' => 'registerBtn' 
     ] 
    ]); 
    ?> 

<?php ActiveForm::end(); ?> 

правило:

public function rules() 
{ 
    return [ 
     [['email'], 'required'], 
     [['email'], 'unique'], 
     [['email'], 'email'], 
     [['email'], 'unique', 'targetClass' => \humhub\modules\user\models\User::className(), 'message' => Yii::t('UserModule.base', 'E-Mail is already in use! - Try forgot password.')], 
     [['check'], 'required'], 
     [['check'], 'compare', 'compareValue' => 1, 'message'=>'bla-bla-bla'], 
    ]; 
} 

Как сделать свою форму действительной только если оба «электронная почты» не опустошить действительную и 'check' проверяется? Теперь проблема «проверка» не проверяется. Благодарю.

+0

Удалить ' 'снимите флажок' => NULL 'и' compare' и посмотреть, действительно ли имеет значение. –

+0

Привет, Костас, он тоже не работает. – max

ответ

0

Измените правило compare и обновите требуемое правило, как показано ниже.

[['check'], 'required', 'requiredValue' => 1, 'message'=>'bla-bla-bla'],

+0

Привет, Шишир! Пытался. Не работает. – max

0

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

Добавить этот метод в вашей модели:

public function validateCheckWithEmail($attribute, $params) 
{ 
    if (empty($this->check) && !empty($this->email) && $this->validateAttribute($this, 'email')) { 
     $this->addError($attribute, $this->getAttributeLabel($attribute).' field cannon be empty.'); 
    } 
} 

В правилах добавления:

[['check'], 'validateCheckWithEmail', 'skipOnEmpty' => false, 'skipOnError' => false], 
Смежные вопросы