@Leopandro
Разработчик CRM/ERP систем

Как отменить обязательность поля?

public function rules()
    {
        return [
	        [['car_id', 'driver_id'], 'required'],
            [['car_id', 'driver_id', 'use_new_tariffs', 'town', 'town_center', 'km_price'], 'integer'],
            [['car_id'], 'exist', 'skipOnError' => true, 'targetClass' => Car::className(), 'targetAttribute' => ['car_id' => 'id']],
            [['driver_id'], 'exist', 'skipOnError' => true, 'targetClass' => Driver::className(), 'targetAttribute' => ['driver_id' => 'id']],
	        [['town', 'town_center', 'km_price'], 'required', 'when' => function($model){
		        return $model->use_new_tariffs;
	        }],
        ];
    }


У меня поля 'town', 'town_center', 'km_price' становятся обязательными, если стоит галочка "использовать новый тарифы" и нажать отправить форму. Но если отжать галочку, то обязательность полей все рано остается, как то исправить?
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 2
Использовать условную валидацию.
через WhenClient повесить на ваш чекбокс или инпут, ну или что у вас.
У вас реализовано, но втыкается модель, попробуйте использовать переменную из вашего чекбокса как в примере по ссылке. типа такого.
$model->checkBox == true;
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Как вариант:
Можно использовать ajax валидацию и в экшене валидации делать эту проверку. Можно например сделать разные сценарии для модели.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы