Используя Yii2 и ActiveForm, возможно ли иметь собственную функцию проверки, которая добавляет / удаляет ошибки в нескольких полях? - PullRequest
0 голосов
/ 17 июня 2019

Используя Yii2, в ActiveForm я хочу иметь пользовательские функции проверки AJAX, которые проверяют 2 связанных поля одновременно.Это означает, что если проверка не удалась, я хочу, чтобы в ActiveForm были ошибки в обоих полях, и наоборот, если проверка пройдена, я хочу, чтобы обе ошибки были удалены в ActiveForm.

В настоящее время я создалпользовательская функция проверки, которая применима к обоим полям.Тем не менее, он будет вызывать / сбрасывать ошибку только в поле, которое я изменил, а не в другом связанном поле.

В моей модели у меня есть это правило:

public function rules()
{
    return [[['start_date', 'end_date'], 'isStartDateEarlierThanOrEqualToEndDate', 'skipOnError' => 'false']];
}

Вот пользовательская функция, которую я создал:

public function isStartDateEarlierThanOrEqualToEndDate($attribute_name, $params)
{
    if( $this->start_date && $this->end_date && $this->start_date > $this->end_date ) {
        $this->addError($attribute_name, 'Start date must be earlier than or equal to end date.');
        return false;
    }
}

Я попытался изменить пользовательскую функцию наТакже добавьте ошибки в оба поля, но это тоже не сработает.Код, как показано ниже:

public function isStartDateEarlierThanOrEqualToEndDate($attribute_name, $params)
{
    if( $this->start_date && $this->end_date && $this->start_date > $this->end_date ) {
        $this->addError('start_date', 'Start date must be earlier than or equal to end date.');
            $this->addError('end_date', 'Start date must be earlier than or equal to end date.');
        return false;
    }
}

Ожидание: если я установлю start_date на 5 января 2019 года. Затем я установлю end_date на 3 января 2019. Сообщение об ошибке будет отображаться только для поля end_date.Я хочу сообщение об ошибке для start_date и end_date.Аналогичным образом, когда я фиксирую дату начала 2 января 2019 года, сообщение об ошибке даты конца не очищается.Я хочу, чтобы любые изменения в любом из полей приводили к ошибкам в обоих полях или к устранению ошибок в обоих полях.

Любая помощь приветствуется.Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...