谁一开始就是大神?

PHP 第58页

PHP

不同场景下验证规则失效[2.0]

lovepony阅读(132)

 ['password', 'required', 'on' => 'create'],
 ['password', 'string', 'min' => 6],
 ['password', 'check'],

上面是rules()里面的规则, password字段不是数据库自带的,我添加进去的. 按理来说第三行check方法会在所有场景下都验证,但为什么只在create时候执行, update时跳过了呢?

而且我在调用之前也设置了 $model->scenario = 'update';

scenarios()也设置了

    public function scenarios()
    {
        $scenarios = parent::scenarios();
        $scenarios['update'] = ['username', 'email', 'status'];
        return $scenarios;
    }

附上一段代码,是在insert/update之前调用的validate函数,如下;注意其中的
这里的activeAttributes是当前的scenario所包含的属性,即 [‘username’, ’email’, ‘status’],接下来的校验之针对这几个属性做教研,不会针对password做校验。
其中 $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
假如
scenarios 沒有設置
你的寫法會讓所有的欄位被驗證
但你
override scenarios 的方法, 也設置了情境如下
$scenarios[‘update’] = [‘username’, ’email’, ‘status’]; // 當你情境為 update 時, 指驗證後方指定的欄位
你後方尚未加入 password 所以會跳過阿~~~
按你现在的配置,只是在create时才是必须的呀,别的场景下略过也不算错误吧。

yii-adminRBAC[2.0]

acgtom阅读(132)

在做 Create Rule操作时
要求输入 Class Name
请问 这个 Class Name 是根据什么输入的?

这个 className 是规则类,规则类里必须实现方法 abstract public function execute($item, $params)
具体的逻辑来判定 $item(角色或者权限)是否可执行。

yii2部署到线上奇葩问题?求牛人。[2.0]

Bravelovely阅读(144)

输入图片说明
看英文解释我也知道是没有加载mysqli.d这个鸟东西 在这个路径下也的确是没有这个东西 然后找mysqli.d这个关键字谷歌 根本没有解决问题问题的信息。。
不知道从何下手。
最重要的问题就是 只是线上偶尔刷新会出现这个警告 对程序没有任何影响。。。 并且本地不会出现这个问题

上面不是写了吗?php核心错误,重安装php吧。
ps:这个问题主要和csrf这里有关,关闭了某些不必要的可以解决。根本解决的话就是从新安装php环境及yii可以解决,问题出在哪里还没有搞清楚。
重搭web环境吧

用AJAX提交表单,表单内有9个图片上传,图片过大,就提示数据无法被验证[2.0]

youthlemon阅读(142)

标题写的很清楚了,不是csrf的问题,图片总量不太大,就能上传成功,但是只要图片大一些,就出现数据无法被验证。求大神解答

php的post_max_size表单数据最大默认是8M,
upload_max_filesize最大默认是2M,
是这方面没设置好么?你图片最大的时候是多大
ajax异步上传图片
最好是使用php_ini来设置这些属性,不然部署一次环境就要修改一下环境,容易出错。

yii2fields返回关联数据,能否根据不同的场景,使得model携带不同的数据返回?[2.0]

HazelJames阅读(156)

yii2 fields返回关联数据,能否根据不同的场景,使得model携带不同的数据返回?
例如:

public function fields(){
    $fields = parent::fields();
    if($this->scenario == self::SCENARIO_INDEX){
        array_push($fields,'lectures');
    }else{
        array_push($fields,'lectures','course');
    }
    return $fields;
}

但是现在问题在于,关联数据,比如lectures,如何进一步指定呢?

有的 利用 toArray($fields, $expand, $recursive )$expand , 跟model的 extraFields method
Model 部分
Controller 部分
這方法可以第一眼在 controller 的 action 知道會回傳內容甚麼值
這樣也可以 分 原table屬性以及新加的屬性
這樣是你要的?
如果是 從資料表撈出大筆數據, 昨天發現一個方法你也可以參考看看
selecting-extra-fields
http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#selecting-extra-fields

安装yii2-kartikgii时提示错误[2.0]

HaHfans阅读(133)

D:\phpStudy\WWW\yii\shop>php ../composer.phar require warrence/yii2-kartikgii "d
ev-master"
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Your requirements could not be resolved to an installable set of packages.

  Problem 1
    - yiisoft/yii2-jui 2.0.5 requires bower-asset/jquery-ui 1.11.*@stable -> no
matching package found.
    - yiisoft/yii2-jui 2.0.4 requires bower-asset/jquery-ui 1.11.*@stable -> no
matching package found.
    - yiisoft/yii2-jui 2.0.3 requires bower-asset/jquery-ui 1.11.*@stable -> no
matching package found.
    - yiisoft/yii2-jui 2.0.2 requires bower-asset/jquery-ui 1.11.*@stable -> no
matching package found.
    - yiisoft/yii2-jui 2.0.1 requires bower-asset/jquery-ui 1.11.*@stable -> no
matching package found.
    - yiisoft/yii2-jui 2.0.0 requires bower-asset/jquery-ui 1.11.*@stable -> no
matching package found.
    - warrence/yii2-kartikgii dev-master requires kartik-v/yii2-icons * -> satis
fiable by kartik-v/yii2-icons[v1.0.0, v1.1.0, v1.2.0, v1.3.0, v1.4.0, v1.4.1].
    - kartik-v/yii2-icons v1.0.0 requires yiisoft/yii2-jui * -> satisfiable by y
iisoft/yii2-jui[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].
    - kartik-v/yii2-icons v1.1.0 requires yiisoft/yii2-jui * -> satisfiable by y
iisoft/yii2-jui[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].
    - kartik-v/yii2-icons v1.2.0 requires yiisoft/yii2-jui * -> satisfiable by y
iisoft/yii2-jui[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].
    - kartik-v/yii2-icons v1.3.0 requires yiisoft/yii2-jui * -> satisfiable by y
iisoft/yii2-jui[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].
    - kartik-v/yii2-icons v1.4.0 requires yiisoft/yii2-jui * -> satisfiable by y
iisoft/yii2-jui[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].
    - kartik-v/yii2-icons v1.4.1 requires yiisoft/yii2-jui * -> satisfiable by y
iisoft/yii2-jui[2.0.0, 2.0.1, 2.0.2, 2.0.3, 2.0.4, 2.0.5].
    - Installation request for warrence/yii2-kartikgii dev-master -> satisfiable
 by warrence/yii2-kartikgii[dev-master].

Potential causes:
 - A typo in the package name
 - The package is not available in a stable-enough version according to your min
imum-stability setting
   see <https://getcomposer.org/doc/04-schema.md#minimum-stability> for more det
ails.

Read <https://getcomposer.org/doc/articles/troubleshooting.md> for further commo
n problems.

Installation failed, reverting ./composer.json to its original content.

今天我更新的时候也出现同样的问题,修改 require 部分如下,解决问题。

谁有yii2.0使用curl和curl扩展的案例?[2.0]

Bellaslim阅读(145)

谁有yii2.0使用curl和curl扩展的案例?

一个请求的完整类 项目里面一直在用
class HttpRequest {
// echo $query;exit;
// var_dump($data);exit;
// $headers = $this -> headers;
// while (!feof($httpreq))
// {
// $rsp .=@fgets($httpreq,4096);
// }
// print_r($rsp);exit;
// $this -> status = array_shift($headers);
}
这个你按照原生的不就好了吗 –
用不着扩展,直接写个类加namespace。使用时use过来即可。
不是说了吗不用做成扩展,直接开个类,建俩方法,一个get一个post,把对应的curl语句放进去
GuzzleHttp

$user->save()修改用户密码[2.0]

Wendyfrog阅读(151)

if ($user->save()) {
    return true;
}

返回值为1
但是 实际并没有修改成功!
我该从哪里着手去调查这个问题呢?

print_r($model->errors),打印,看看有什么错误提示
有可能影响的记录为0,if里面改成$user->save()>0试试
http://www.yiichina.com/question/616 移步把
你 user 的验证规则有没有问题?
$user->save(false); 这个试一试
从头理,一步一步找问题。save方法在为新纪录时insert在不是新纪录时update
返回1就代表已经成功。
检查是否是更新对了地方…

在yii中使用极验验证[2.0]

Harryslim阅读(138)

求告知怎么用的。刚用了yii自带的验证码。然后人家说现在用极验。去搜了搜注册了下载了,然而不会用啊。求助

重要的就三个文件:
第一个是类库里的Geetestlib.php,这个需要加个命名空间。
第二个是类库里的StartCaptchaServlet.php用于预处理。(拿出代码改吧改吧放控制器预处理部分去)
第三个就是类库里的VerifyLoginServlet.php用于验证。(拿出代码改吧改吧放表单处理部分去)
最简单的4步使用方法就是
1,控制器里use第一个类库;
2,动作里预处理前端ajax请求;
3,在表单提交到的动作里处理验证;
4,把gt.js注册进表单视图里(一定要放在jquery后面),并做好ajax部分的。
有时间把它写成一个扩展。
写成扩展了吗

登录

找回密码

注册