天天看點

Yii2.0 scenarios場景應用詳解

Yii2.0 場景的使用:

舉個簡單的例子,現在在 post表裡面有 title image content 三個的字段,當我建立一個 post 的時候,我想三個字段全部是必填項,但是你修改的時候,title content 兩個字段是必填的, iamge 可以不填寫。正常的情況下, [[‘title’, ‘content’, ‘image’], ‘required’,], 但是我們更改的時候 隻需要 [[‘title’, ‘content’], ‘required’], 就可以了,但是少了 image 字段,我們的表單就無法送出,這種問題怎麼辦啊??

場景可以幫你解決這種問題,下面是一個簡單的場景執行個體。

1.首先我們在 model 裡面定義一下場景 類名必須是 scenarios()

public function scenarios()
{
    return [
        'create' => ['title', 'image', 'content'],
        'update' => ['title', 'content'],
    ];
}
           

2.好的,如上所示,場景的基本設定我們就已經完成一部分了,下面我們設定 rules() ,調用場景我們用 on 關鍵字

[['title', 'content'], 'required', 'on' => ['create', 'update']],
[['image'], 'required', 'on' => 'create'],
[['image'], 'image', 'enableClientValidation' => true, 'maxSize' => , 'message' => '您上傳的檔案過大', 'on' => ['create', 'update']],
           

on 指定的就是場景,一個場景用字元串,多個場景用數組

3.好的,model 裡面我們就設定完畢了 現在開始調用吧 Controller裡面

$model = $this->findModel($id);
$model->setScenario('update'); 
//或者 $model->scenario = 'update'; 都可以
           

上面的意思就是 調用 update 場景。