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';
  • 相关阅读:
    Redis(window版本)安装及使用
    springMVC转发与重定向
    java集合的实现细节--ArrayList和LinkedList
    VMware(虚拟机) 12版安装深度linux系统
    java中String创建对象分析(转)
    java面试之谈
    java中堆与栈的区别
    sql百万级查询优化(转)
    解决Maven下载依赖慢的问题(转)
    SpringMVC的底层实现
  • 原文地址:https://www.cnblogs.com/isuben/p/5533659.html
Copyright © 2011-2022 走看看