Hi i have 2 dropdownlsits:
<?= $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
],
]); ?>
And i want to make one of them required if second of then is not selected. So if user not select both of them it should show message under two of them but if user select one it should save my model. I tried to do that with rules:
[['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}"],
but now 2 of then is all time required. What can i do to required one of then? my action create in 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,
]);
}
}
My rules now:
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']
];
}