Привет у меня есть 2 dropdownlsits:Один из к DropDownLists должен быть обязательно
<?= $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']
];
}
хмм теперь не требуется оба DropDownLists – qwerty
я не знаю, почему это не работает или я использовал эти собственные правила раньше в других p roject и он работает, но теперь это не – qwerty
@qwerty. теперь он работает или нет? –