Javascript 必须需要一个到下拉列表

Javascript 必须需要一个到下拉列表,javascript,yii2,rules,required,Javascript,Yii2,Rules,Required,嗨,我有两个下拉列表: <?= $form->field($model, 'Rel_User')->widget(Select2::classname(), [ 'data' => ArrayHelper::map(UrUser::find()->orderby('Surname')->all(), 'Id', 'fullName'), 'language' => 'pl', 'options' => ['placehol

嗨,我有两个下拉列表:

 <?= $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
    ],
]); ?>
但现在需要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']
        ];
    }

在模型中使用自定义验证:

public function rules()
{
  return [      
     [['Rel_User, Rel_Category'], 'my_required'],
  ];
}

public function my_required($attribute_name, $params)
{
   if (empty($this->Rel_User) && empty($this->Rel_Category)) 
   {
     $this->addError($attribute_name, Yii::t('app', 'At least 1 of the field must be filled up properly'));

    return false;
   }

   return true;
}

嗯,现在它不需要两个下拉列表我不知道为什么它不起作用或者我以前在其他项目中使用过自己的规则,但现在它起作用了,但现在它不起作用了,可能是it控制器失败了,但这是我在那里工作的原因很好,我向你展示了我的控制器,但我需要移动$model->validate()在所有可能的地方,但仍然不是work@qwerty. 从所需规则中删除这两个字段。
public function rules()
{
  return [      
     [['Rel_User, Rel_Category'], 'my_required'],
  ];
}

public function my_required($attribute_name, $params)
{
   if (empty($this->Rel_User) && empty($this->Rel_Category)) 
   {
     $this->addError($attribute_name, Yii::t('app', 'At least 1 of the field must be filled up properly'));

    return false;
   }

   return true;
}