2017-01-13 6 views
0

Я создал специальный класс проверки подлинности с именем «EndTimeValidator» в общем пространстве имен \ components.Проверка правильности клиентской части клиента

Код:

namespace common\components; 

use yii\validators\Validator; 

class EndTimeValidator extends Validator 
{ 
    public function init() 
    { 
     parent::init(); 
     $this->message = 'Event EndTime must be greater than StartTime.'; 
    } 

    public function validateAttribute($model, $attribute) 
    { 
     $startDate = $model->StartDate; 
     $endDate = $model->EndDate; 

     $startTime = $model->StartTime; 
     $endTime = $model->EndTime; 

     if(($startDate == $endDate) && $startTime != "" && $endTime != "" ) 
     { 
      if(strtotime($endTime) < strtotime($startTime)) 
      { 
       $this->addError($attribute, $this->message); 
      } 
     } 
    } 

    public function clientValidateAttribute($model, $attribute, $view) 
    { 
     $startDate = $model->StartDate; 
     $endDate = $model->EndDate; 

     $startTime = $model->StartTime; 
     $endTime = $model->EndTime; 

     if(($startDate == $endDate) && $startTime != "" && $endTime != "" ) 
     { 
      if(strtotime($endTime) < strtotime($startTime)) 
      { 
       return <<<JS 
    messages.push($this->message); 
JS; 
      } 
     } 
    } 
} 

А в модели я первый включала этот путь и определил проверки, как показано ниже:

use common\components\EndTimeValidator; 

['EndTime', EndTimeValidator::class], 

Вопрос обновление:

Но она дает меня ниже исключения:

вызов функции члена getAttributeLabel() на не-объект

Я упомянул об этом link. Я что-то делаю неправильно? Пожалуйста, направляйте меня. Благодаря!

ответ

0

Это была глупая ошибка. Но я буду держать этот вопрос, поскольку это может помочь кому-то.

ошибка была из-за следующую строку в функции validateAttribute

$this->addError($attribute, $this->message); 

Замените эту строку с:

$model->addError($attribute, $this->message); 
1

Использование:

use common\components\EndTimeValidator; 

/** .... */ 

['EndTime', EndTimeValidator::class], 
+0

Спасибо это сработало! Но после этого он все еще дает мне еще одну ошибку. Я обновил вопрос. Не могли бы вы снова помочь? – Chinmay

+0

Пожалуйста, показать полную ошибку и файл, где он указывает – Yupik