tw1996

tw1996

这家伙有点懒,还没写个性签名!

  • 财富值0
  • 威望值0
  • 总积分370

个人信息

  • 回复了 的回答

    这个要在apache或nginx中进行配置吧

    不是, 可以改目录结构的.

  • 提出了问题
    高级版如何改成一个单一入口访问
  • 2016-08-03 已签到
    连续签到1天,获得了5个金钱
  • 2016-07-28 已签到
    连续签到1天,获得了5个金钱
  • 2016-07-19 已签到
    连续签到2天,获得了10个金钱
  • 2016-07-18 已签到
    连续签到1天,获得了5个金钱
  • 用高级版 ,自带登陆注册

  • 2016-07-14 已签到
    连续签到2天,获得了10个金钱
  • 回复了 的回答

    附上一段代码,是在insert/update之前调用的validate函数,如下;注意其中的

    if ($attributeNames === null) {
                $attributeNames = $this->activeAttributes();
            }
    

    这里的activeAttributes是当前的scenario所包含的属性,即 ['username', 'email', 'status'],接下来的校验之针对这几个属性做教研,不会针对password做校验。

    public function validate($attributeNames = null, $clearErrors = true)
        {
            if ($clearErrors) {
                $this->clearErrors();
            }
    
            if (!$this->beforeValidate()) {
                return false;
            }
    
            $scenarios = $this->scenarios();
            $scenario = $this->getScenario();
            if (!isset($scenarios[$scenario])) {
                throw new InvalidParamException("Unknown scenario: $scenario");
            }
    
            if ($attributeNames === null) {
                $attributeNames = $this->activeAttributes();
            }
    
            foreach ($this->getActiveValidators() as $validator) {
                $validator->validateAttributes($this, $attributeNames);
            }
            $this->afterValidate();
    
            return !$this->hasErrors();
        }
    

    其中 $validator->validateAttributes($this, $attributeNames);是获取当前scneriao的所有validator,然后利用这些validator对scenario包含的属性进行校验;根据你的设置,当前的validator是包含['password','check']的,但是validator检验属性的时候是要检验validator指定的属性(password)和scnario属性(email,username...)的交集;所以实际上该validator啥也没做。
    修改一下update需要检验的属性就可以了:$scenarios['update'] = ['username', 'email', 'status','password'];这样update场景下会执行pssword check和min validator

    恩恩,非常感谢.

见习主管 等级规则
370/500
资料完整度
10/100
用户活跃度
10/100

Ta的关注

2

Ta的粉丝

3

Ta的访客

6