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]);
}
