Привет, у меня есть 2 раскрывающихся списка:
<?= $form->field($model, 'Rel_User')->widget(Select2::classname(), [
'data' => ArrayHelper::map(UrUser::find()->orderby('Surname')->all(), 'Id', 'fullName'),
'language' => 'pl',
'options' => ['placeholder' => Yii::t('app', 'Wybierz użytkownika ...')],
'pluginOptions' => [
'allowClear' => true
],
]); ?>
<?= $form->field($model, 'Rel_Category')->widget(Select2::classname(), [
'data' => ArrayHelper::map(SmUserCategory::find()->orderby('Name')->all(), 'Id', 'Name'),
'language' => 'pl',
'options' => ['placeholder' => Yii::t('app', 'Wybierz kategorię ...')],
'pluginOptions' => [
'allowClear' => true
],
]); ?>
И я хочу сделать один из них обязательным, если второй из них не выбран. Поэтому, если пользователь не выберет их оба, он должен показать сообщение под двумя из них, но если пользователь выберет один, он должен сохранить мою модель. Я пытался сделать это с помощью правил:
[['Rel_User'], 'required', 'whenClient' => "function (attribute, value) {return $('#banner-rel_category input[type=dropdown]:checked').val() == null}"],
[['Rel_Category'], 'required', 'whenClient' => "function (attribute, value) {return $('#banner-rel_user input[type=dropdown]:checked').val() == null}"],
но теперь 2 из них все время требуется. Что я могу сделать, чтобы потребовать один из них? мое действие создать в ctrl
public function actionCreate() {
$model = new Banner();
$model->scenario='create';
if ($model->load(Yii::$app->request->post())) {
$model->File = UploadedFile::getInstance($model, 'File');
if ($model->save() && $model->upload() && $model->validate()) {
return $this->redirect(['view', 'id' => $model->Id]);
}
} else {
return $this->render('create', [
'model' => $model,
]);
}
}
Мои правила сейчас:
public function rules() {
return [
[['Url'], 'required'],
[['File'], 'required', 'on' => 'create'],
[['Rel_User'], 'my_required'],
[['Rel_Category'], 'my_required'],
[['Views', 'Rel_User', 'Rel_Category', 'CreatedAt', 'UpdatedAt', 'IsDeleted', 'Id'], 'integer'],
[['Image', 'Url', 'Caption'], 'string', 'max' => 255],
[['Url'], 'match', 'pattern' => '/^(http(s?):\/\/)?(www\.)?[a-zA-Z0-9\.\-\_]+(\.[a-zA-Z]{2,3})+(\/[a-zA-Z0-9\_\-\s\.\/\?\%\#\&\=]*)?$/'],
[['File'], 'file', 'extensions' => ['gif', 'jpg', 'png', 'jpeg', 'JPG', 'JPEG', 'PNG', 'GIF'], 'checkExtensionByMimeType' => false,],
[['CreatedAt', 'IsDeleted'], 'safe']
];
}