>場景的使用結合驗證來操作,場景的意思就是說,在操作某個表對象的時候,會有新增,查詢,修改,刪除等。這些操作就各自對應一個場景,這樣就可以方便的為每個場景進行驗證邏輯的代碼編寫。
[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
- 快捷鍵
- 自定義
- 其它插件