💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
>场景的使用结合验证来操作,场景的意思就是说,在操作某个表对象的时候,会有新增,查询,修改,删除等。这些操作就各自对应一个场景,这样就可以方便的为每个场景进行验证逻辑的代码编写。 [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