谁一开始就是大神?

PHP 第78页

PHP

控制器中怎么调用模型中声明的函数?[2.0]

GraceFox阅读(64)

我在模型Cate中声明了一个方法:public function showAll(){ return 'a'; },在控制器CateController中,怎么才能调用???

1、把showAll方法增加static声明,然后可以用Cate::showAll()调用
2、或者,先new,再用,既:
在上面添加use app\models\Cate;
再在控制器的方法里调用Cate::showAll();

yii2如何调用电脑摄像头webcam[2.0]

Newcrab阅读(68)

想做一个人员信息管理系统,头像让他们自己提供,可是一直没有找到yii2相关的摄像头。yii1.1.x的倒有几个。比如yii-jpegcam,比如yiigems的photobooth。哪位有好的建议没?先谢谢啦。

最终选择这个 http://www.yiichina.com/topic/5960

这里

这好像需要html5,找不到yii1的可以自己写个嘛,做不成扩展,页面引入后直接调用也行啊。
http://www.gbtags.com/gb/share/93.htm

批量插入的时候,事务不起作用.[2.0]

AibyJames阅读(64)

public function actionImport()
{
    try {
        $columns_keys = [];
        $columns = Yii::$app->db->getTableSchema('_crm_product')->columns;
        foreach ($columns as $column) {
            $columns_keys[$column->comment] = $column->name;
        }
        unset($columns);
        
        // web 目录下
        $pFilename = trim(Yii::$app->request->get('filename'), '/');
        // 先用 Reader_Excel2007 读取
        $PHPReader = new \PHPExcel_Reader_Excel2007();
        // 当前的 Reader_Excel2007 可以阅读该文件吗?
        if (! $PHPReader->canRead($pFilename)) {
            // 再用 Excel5 读取
            $PHPReader = new \PHPExcel_Reader_Excel5();
            // 当前的 Reader_Excel5 可以阅读该文件吗?
            if (! $PHPReader->canRead($pFilename)) {
                return $this->error('无法读取该文件');
            }
        }
        // 载入 xls,xlsx 文件
        $PHPExcel = $PHPReader->load($pFilename);
        // 获得活动表
        $objActiveSheet = $PHPExcel->getActiveSheet();
        // 行迭代器
        $rows = [];
        foreach ($objActiveSheet->getRowIterator() as $row) {
            // 单元格迭代器
            $cellIterator = $row->getCellIterator();
            // 将迭代器设置为只循环存在的单元格, false=不存在
            $cellIterator->setIterateOnlyExistingCells(false);
            foreach ($cellIterator as $key => $cell) {
                if ($row->getRowIndex() == 1) {
                    $columns[] = $columns_keys[$cell->getValue()];
                } else {
                    $rows[$row->getRowIndex()][] = trim($cell->getValue(), '\' ="/');
                }
            }
        }
    } catch (ErrorException $e) {
        return $this->error('错误号:' . $e->getCode() . '<br>错误行:' . $e->getLine() . '<br>错误信息:' . $e->getMessage());
    }
    // 在主服务器连接上开始事务
    $db = Yii::$app->db;
    $transaction = $db->beginTransaction();
    try {
        $queryBuilder = $db->queryBuilder;
        $chunk_rows = array_chunk($rows, 5000);
        $count = 0;
        foreach ($chunk_rows as $chunk_row) {
            $sql = $queryBuilder->batchInsert('_crm_product', $columns, $chunk_row);
            $count += $db->createCommand($sql)->execute();
        }
        $message = '成功导入 <code>' . $count . '</code> 条记录';
        // 提交记录
        $transaction->commit();
        return $this->ok($message);
    } catch (Exception $e) {
        // 记录回滚
        $transaction->rollBack();
        return $this->error('错误号:' . $e->getCode() . '<br>错误信息:' . $e->getMessage());
    }
}

检查是否使用了innodb存储引擎

findbyusername义[2.0]

HaHfans阅读(62)

在登录的时候,使用这个静态方法,但是提示未定义

Yii::$app->user->login(static::findByUsername($this->username))

请问是因为我继承的不对吗?还是什么问题

这个方法是要自己写的~
下面是模版中的方法:
如果你使用数据库,可以用User::findOne(['username'=>$username])

Yii2微信请求配置的URL只能在index.php中取得数据,不分发到所的控制器[2.0]

Jasonelephant阅读(71)

Yii2 微信请求填写的URL的时候,我在入口文件(index.php),可以获取发送来的数据,并可以在log中查看到数据。但是发现没有分发到URL所指的控制器方法中。我在控制器方法里面获取不到数据,log也没有数据,请高手帮下忙,看下怎么回事

遇到这种情况,是因为 Yii2 的防止 csrf 攻击,你则不能多次提交相同的表单。如果你希望当前可以多次重复提交,可以在当前提交的表单 controller 中添加
我遇到的情况和你一模一样,捣鼓了一天才弄出来,你试试吧
可以直接在控制器中获取数据。你在腾讯的“微信公众平台”管理页面的“开发者中心”“配置项”指定url、token的地方,url那里填你的完整路由就好了。
可以在index.php上获取数据,那么在控制器中也是可以获取的,这个是全局的。
如你所说,获取不到,
原因可能是你访问url有问题,是不是没有访问到你的控制器里面动作。
可以看下生成的log。
index.php 后 写人session里,全局调用, 如果写不进去就是字符编码问题,或者解析json有问题.

YII2.0数据库无主键,无法保存数据[2.0]

JadeLion阅读(63)

数据字段中,没有主键字段,(因为不需要),在插入数据的时候,会提示数据无主键,请问rules需要怎么设置才可以不验证主键

Note that an array should be returned even for a table with single primary key.
上面一句是注释, 要求返回数组格式;
另外一个小小建议, 最好还是保留一个主键, 即使不需要;

求个系统点的YII2学习方法[1.0]

Jadebubble阅读(70)

用YII2做了两个月的项目了,自己也在自己练习,但是还是感觉没有个整体思路。希望大家能够给总结一下,整理出来一个系统的YII2学习计划,最好是能够由易到难,囊括常用YII功能及插件。谢谢!!!

要系统学习,第一阶段是逐字逐句理解指南,能直接看原文更好;
第二阶段看这本书《Web Application Development with Yii 2 and PHP》;
第三阶段github上有不错的开源项目,找些来学习,有不错的设计思想可借鉴;
第四阶段自己设计和积累widget, extension,时间长了就能像搭积木那样构建很多类型的应用了。
自己做一个项目,你先想到你需要什么,只要你需要什么你的你就会去找什么,思路清晰了,也就不是问题了,不懂的话还可以多看看手册,
如二楼所言
先看文档做个小东西
自己做个基本的功能,自己慢慢扩展,需要什么,就做什么事,日积月累,你就成功啦。
我写的yii2实战,我觉得蛮好的,大家反馈也挺好的,自荐一下。

请问,如何使用AccessControl优雅、简洁的进行权限控制呢?[2.0]

Anifrog阅读(73)

大家好

请问如下的需求应该如何使用AccessControl 实现呢?
controller中有三个方法。

  1. hello
  2. name
  3. delete

用户有2个

  1. admin [rbac中分配了3个方法]
  2. user [rbac中 只有 hello]

需求:

  1. 所有未登录用户不能访问任何方法
  2. 登录用户中 根据rbac的授权 来访问。

不知道如何实现呢?

我现在使用
beforeaction 来判断rbac的权限,但是 使用了 beforeaction 之后 我设置的VerbFilter 对 delete方法的post过滤就失效了。 注释beforeaction后 是正常的。

这是我现在的 behaviors配置 但是无法实现 2个已登录用户的 权限区别。

public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'delete' => ['post'],
                ],
            ],
            'access' => [
                'class' => \yii\filters\AccessControl::className(),
                //'only' => ['hello',],
                'rules' => [
                    [
                        'allow' => false,
                        'roles' => ['?'],
                    ],
                ],
            ],
        ];
    }

手册中 AccessControl类 有方法beforeAction 说明是 在所有的过滤之后 在执行之前的最后一个判断的时间了,我感觉比较适合我现在的情况,但是水平太菜,不知道如何去配置AccessControl类的beforeAction 。

请问该如何使用AccessControl 简洁优雅的实现我的需求呢?

为什么使用user->login($identity,$duration)无效?[2.0]

EllieStag阅读(71)

使用Yii2自带的用户组件yii/web/User来实现登录,自建的UserModel也继承了IdentityInterface接口,但是在使用Yii::$app->user->login($identity, $duration)登录时,虽然登录成功了,但是$duartion并未起作用,查看生成的cookie始终是24小时后失效,无论怎么调整$duration也不起作用,请问这是什么原因呢?

csdn博客:Yii2 login登陆
可参考这个博客,里面比较详细讲述了yii2 login的问题
allowCookie 什么的开了么,具体属性名字忘记了……
enableAutoLogin 是否启用了

關於attributes的問題[2.0]

Harryslim阅读(63)

這邊是我 models 的 code

namespace app\models;

use Yii;
use app\models\Api;

class Order_api extends Api
{
    public $account_id;
    public $create_date;
    public $auth_code;

    public function rules()
    {
        return [
            [['account_id','auth_code'], 'required']
        ];
    }

    public function check_params($standard ,$data)
    {
        return parent::check_params($standard ,$data);
    }
}

這邊是 controller 的 code

public function actionTest()
    {	
    	$app_order = [
    		'account_id' => '1',
    		'create_date' => '2',
    		'auth_code' => '3'
    	];
    	$a = new \app\models\Order_api;
    	$a->attributes = $app_order;   <====== 這邊為什麼我把 models 的 public rules() 整個function 移除
    	//$a->account_id = '1';     
    	$a->attributes;    
        var_dump($a);                  <====== 這邊印出來的卻是 每個成員變數都是 NULL
    }

有查看 yii\base\Models attributes() 內部的寫法 他也指示用 ReflectionClass 反映有哪些 public name 而已

想請教 $a->attributes = $app_order; 當我的 models 有 public rules(){ … } 的時候
var_dump($a); 的成員變數是有被賦予值得,但我移除 public rules(){ … }之後成員變數卻都是 NULL
想知道他流程是怎麼跑的為什麼只有 NULL 而沒有值 !!

剛剛沒有看 _set && _get 現在知道怎麼設定了~~~ 希望也可以分享您知道的流程給我參考

$a->attributes = $app_order; 实际调用的是 $a->setAttributes($app_order);
而调用setAttributes方法赋值时, 默认只加载safaAttributes;
所谓的safeAttributes, 指的就是 : 在rules中有声明验证规则的attribute;
这就是rules移掉, 赋值后全是null的原因
所以 : 在rules里面把需要的属性都声明到, 即便是safe也可以.

登录

找回密码

注册