1、在表单(postsForm)中定义场景
通过场景将文章的创建、修改、删除等区分开来。
定义场景常量、设置场景
/** * 定义场景常量 * SCENARIO_CREATE 创建场景 * SCENARIO_UPDATE 更新场景 */ const SCENARIO_CREATE = 'create'; const SCENARIO_UPDATE = 'update'; /** * 设置场景 * self::SCENARIO_CREATE 设置创建文章场景需要用到的属性字段 * self::SCENARIO_UPDATE 设置更新文章场景需要用到的属性字段 * @return array 然后把设置的场景数据与继承的场景数据合并覆盖 */ public function scenarios() { $scenarios = [ self::SCENARIO_CREATE => ['title','content','label_img','cat_id','tags'], self::SCENARIO_UPDATE => ['title','content','label_img','cat_id','tags'], ]; return array_merge(parent::scenarios(),$scenarios); }
2、在控制器(postsController)定义场景
/** * 文章创建 */ public function actionCreate() { $model = new PostsForm(); //定义场景 $model -> setScenario(PostsForm::SCENARIO_CREATE); if ($model->load(Yii::$app->request->post()) && $model->validate()){ if (!$model->create()){ Yii::$app->session->setFlash('warning',$model->_lastError); }else{ return $this->redirect(['posts/view','id'=>$model->id]); } } //获取所有分类 $cat = CatsModel::getAllCats(); return $this -> render('create',['model' => $model,'cat' => $cat]); }