yii2場景的應用(scenarios)


例如:

現在在 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' => 1024, 'message' => '您上傳的文件過 大', 'on' => ['create']],

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

3、好的,model 里面我們就設置完畢了 現在開始調用吧。 Controller 里面

$model = $this->findModel($id); $model->setScenario('update'); or $model->scenario = 'update';

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

 

原文鏈接:http://www.yiichina.com/tutorial/89

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM