Yii2 的場景使用

需求描述

有個mobile字段,想只修改這個字段的時候驗證爲必填,建立的時候不是必填項ios

場景配置

咱們的場景就命名爲editmobile吧segmentfault

public function scenarios()
{
    return [
        'editmobile' => ['mobile'],
    ];
}

修改rulesapp

public function rules()
{
   return [
           [['company', 'email'], 'string', 'max' => 60],
           [['company', 'city'], 'required'],
           [['mobile'], 'required',"on"=>["editmobile"]],
        ];
}

使用場景

$model = Info::find()->where(['t_id'=> $id])->one();
$model->setScenario('editmobile'); //or $model->scenario = 'editmobile';
$model->load(Yii::$app->request->post());
if($model->save){
  //todo
}

遇到的問題

起做用了
可是使用create的時候,保存卻出了問題,提示unknown scenarios:defaultpost

解決方法

後來找文章,是由於設置場景的時候,直接把父類的場景覆蓋了。因此應該這樣寫scenariosui

public function scenarios()
{
    $scenarios = parent::scenarios();
    $scenarios['editmobile'] = ['mobile'];
    return $scenarios;
}

這樣就ok了。
參考文章:https://segmentfault.com/q/10...code

相關文章
相關標籤/搜索