标题
1.场景应用
场景可以限制所应用的字段 可以自行调整修改和增加之间 字段的差异
场景的用法 目录/ frontend / models / PostForm.php
/*** 用常量定义场景
* SCENARIOS_CREATE 创建 音标 [sɪ'nɑ:ri:əʊz]
* SCENARIOS_UPDATE 更新
* 场景的应用就是限制了所应用的字段 可以自行调整
*/
const SCENARIOS_CREATE = 'create';
#常量定义场景const SCENARIOS_UPDATE = 'update';
/***
场景设置
*/
public function scenarios(){
$scenarios = [
self::SCENARIOS_CREATE=>
['title','content','label_img','cat_id','tags'],
self::SCENARIOS_UPDATE=>
['title','content','label_img','cat_id','tags'],
];
return array_merge(parent::scenarios(),$scenarios);
#继承了default的场景 将继承的场景覆盖合并到现在的场景中去。
}
控制层写法
/***
创建文章
*/
public function actionCreate(){
$model = new PostForm();
// 定义场景
$model->setScenario(PostForm::SCENARIOS_CREATE);
# setScenarios 设置场景
if ($model->load(Yii::$app->request->post() && $model->validate()) {
if (!$model->create()) {
Yii::$app->session->setFalsh('warning',$model->_lastError);
}else{
return $this->redirect(['post/view','id'=>$model->id]);
}
}
// 获取所有分类
$cat = CatsModel::getAllCats();
return $this->render('create',['model'=>$model,'cat'=>$cat]);
}