У меня есть переключатель с двумя значениями (обязательное поле), на основе которого отображается одно поле (есть два поля, которые изначально скрыты, они отображаются на основе значения переключателя), которое должно быть обязательным. Поэтому я использовал условную проверку для изначально скрытых полей.
Это мой код модели:
public function rules()
{
return [
[['receipt_no', 'date_of_payment', 'payment_method_id',
'total_amount'], 'required'],
['nonmember_name', 'required', 'whenClient' => function($model)
{
return $model->is_member == 2;
}, 'enableClientValidation' => false],
['member_id', 'required', 'whenClient' => function($model)
{
return $model->is_member == 1;
}, 'enableClientValidation' => false],
[['receipt_no', 'date_of_payment', 'payment_method_id',
'total_amount','is_member'], 'required','on' => 'receipt'],
];
}
Я использую сценарий receipt
, is_member
— это поле переключателя. Если я выберу значение 1 для is_member
, то поле member_id
будет видно, и оно должно быть обязательным. Если is_member
имеет значение 2, то отображается nonmember_name
, и это поле должно стать обязательным. С моим кодом в модели мне удалось этого добиться. Но теперь другие действия (сохранение новой строки данных в модели) с использованием этой модели имеют ошибку
Массив ( [nonmember_name] => Массив ( [0] => Имя не может быть пустым. ))
Итак, мой вопрос заключается в том, как я могу сделать условную проверку специфичной для сценария (я думаю, что моя ошибка связана с обязательным правилом, определенным в условной проверке)
ИЗМЕНИТЬ:
Это моя радиокнопка
<?= $form->field($model, 'is_member')->radioList(array('1'=>'Member',2=>'Non Member'))->label('Member or Not'); ?>