zoukankan      html  css  js  c++  java
  • YII场景

      YII在模型中定义场景后

    public function scenarios(){//场景
            return [
                'sco1'=>['aid','uphone'],
                'sco2'=>['aid','uphone','status'],
            ];
        }

      在控制器中调用场景时,场景定义之外的字段会在操作时被过滤掉

    public function actionSenorio(){
            $test = new Code();
            $test->scenario = "sco1";
            $testData = [
                'data'=>['aid'=>3,'uphone'=>'015889383625'],
            ];
            $test->load($testData,'data');//在使用load前需要制定场景
            echo $test->aid;//3
    
            /**
             * 博客系统
             * 写文章时和修改文章时需要保留不同的字段,其他字段会被忽略
            **/
        }

     scenarios() 方法默认实现会返回所有yiiaseModel::rules()方法申明的验证规则中的场景, 当覆盖scenarios()时,如果你想在默认场景外使用新场景,可以编写类似如下代码:

    namespace appmodels;
    
    use yiidbActiveRecord;
    
    class User extends ActiveRecord
    {
        public function scenarios()
        {
            $scenarios = parent::scenarios();
            $scenarios['login'] = ['username', 'password'];
            $scenarios['register'] = ['username', 'email', 'password'];
            return $scenarios;
        }
    }

    上面写的可能不是很清晰,我另找了一个 

    public function scenarios()
    {
        return [
            'create' => ['title', 'image', 'content'],
            'update' => ['title', 'content'],
        ];
    }
    [['title', 'content'], 'required', 'on' => ['create', 'update']],
    [['image'], 'required', 'on' => 'create'],
    [['image'], 'image', 'enableClientValidation' => true,   'maxSize' => 1024, 'message' => '您上传的文件过', 'on' => ['create']],
    $model = $this->findModel($id);
    $model->setScenario('update'); or $model->scenario = 'update';
  • 相关阅读:
    Go语言 0 前言
    SVM支持向量机的基本原理
    支持向量机通俗介绍
    线程句柄和线程ID的区别
    分布式事务一致性,事务补偿实战
    ResultSet is from UPDATE. No Data.
    linux 批量kill进程
    mysql数据表拷贝
    Maven assembly 打包
    JS 删除对象属性
  • 原文地址:https://www.cnblogs.com/isuben/p/5533659.html
Copyright © 2011-2022 走看看