Используя 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 года, сообщение об ошибке даты конца не очищается.Я хочу, чтобы любые изменения в любом из полей приводили к ошибкам в обоих полях или к устранению ошибок в обоих полях.
Любая помощь приветствуется.Спасибо