>场景的使用结合验证来操作,场景的意思就是说,在操作某个表对象的时候,会有新增,查询,修改,删除等。这些操作就各自对应一个场景,这样就可以方便的为每个场景进行验证逻辑的代码编写。
[TOC]
#### 1. 创建frontend\models\User.php ,定义其scenarios以及rules
~~~
public function scenarios()
{
//继承了父类的default场景,并新增了一个update场景(只验证和操作一个字段《real_name》)
return array_merge(parent::scenarios(),[
'update' => ['real_name'],
]);
}
/**
* @inheritdoc
*/
public function rules()
{
return [
[['real_name','age','job_name'], 'required'],
[['age'], 'integer'],
[['real_name','job_name'], 'string', 'max' => 50],
[['created_at'], 'safe'],
];
}
~~~
#### 2. 在controller中调用时,使用
~~~
//新增时,因为没有设置Scenario,所以引用的是default场景,则是默认所有的rules规则都执行。
public function actionCreate()
{
$model = new User();
if ($model->load(\Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
} else {
$this->layout = 'iframe';
return $this->render('create', [
'model' => $model,
]);
}
}
//修改时候,只对real_name字段进行修改和验证
public function actionUpdate($id)
{
$model = $this->findModel($id);
$model->setScenario('update');
if ($model->load(\Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['index']);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
~~~
> 参考网址
1. http://www.manks.top/how-to-set-scenario-in-yii2.html
- 基础教程
- 入门安装
- Yii2 composer 安装慢解决
- Cookies
- 数据库操作
- 数据提供者
- 助手类
- 验证规则
- GridView
- DetailView
- YII2分页
- JS、CSS的引用
- Excel导出
- 中文转拼音
- 发送邮件
- 第三方插件
- Session跨域共享
- Url跨域访问
- 场景应用
- 查询条件链
- Session分布式共享
- Redis的使用
- mongodb
- 高级教程
- 自定义gii模板
- 角色权限管理(RBAC)
- user组件的配置
- 国际化(I18N)
- 小部件(Widget)
- 模块(Module)
- 行为(Behavior)
- 缓存(Cache)
- migrate 数据库迁移
- phpstorm
- 快捷键
- 自定义
- 其它插件