Yii2-queue 队列的使用详解。 1.安装 composer require --prefer-dist Yiisoft/Yii2-queue 2.配置,在 common/config/main.php 中配置 redis作为驱动 return [ 'bootstrap' = [ 'queue', // 把这个组件注册到控制台 ], 'components' = [ 'redis' = [ 'class' = \Yii\redis\Connection::class, // ... ], 'queue' = [ 'class' = \Yii\queue\redis\Queue::class, 'a......
Yii2 常用 rules 规则汇总。 // 去除首尾空白字符 ['email', 'trim'] 或 ['email', 'filter', 'filter' => 'trim'] // 验证字段必填 ['email', 'required', 'message' => 'email不能为空'] // 赋予默认值 ['age', 'default', 'value' => 20] // 验证字符串长度 ['email', 'string', 'min' => 3, 'max' => 20] 或 ['email', 'string', 'length' => [3, 20]] // 使用正则表达式 ['username', 'match', 'pattern' => '/^[A-Za-z......
如果你在Yii2中自定义组件,那么你在使用的过程中PhpStorm是不支持自动提示的,比如: Yii::$app->redis->set(key, value); Yii::$app->myComponents->method(param1, param2); 这样写代码的时候总是没有安全感,比如redis组件的executeCommand方法,写的时候总怕方法名写错。 Yii::$app->redis->executeCommand(); 想要PhpStorm自动提示,只需要在项目根目录下新建一个 _ide_helper.php 文件(如果不希望将该代码文件加入到......
Yii2 队列的使用总结。 启动队列监听 php Yii queue/listen 将任务添加到队列 Yii::$app->queue->push(new frontend\components\DownloadJob([ 'url' => 'https://www.phpernote.com/style/refinement/img/logo.gif', 'file' => '/tmp/phpernote.gif', ])); 将任务推送到队列中延时5分钟运行: Yii::$app->queue->delay(5 * 60)->push(new frontend\components\DownloadJob([ 'url' => 'https://www.phpernote.com/s......
Yii2 查询条件使用总结。 Model::find() //第一种:等于和模糊 ->Where(['=', 'status',10]) ->andWhere(['like', 'title','Yii']) # WHERE (`status` = 10) AND (`title` LIKE '%Yii%') //第二种:并列等于 ->Where(['and', 'id=1', 'name=2']) # WHERE id=1 AND name=2 //第三种:并列或,并列与 ->Where(['and', 'type=1', ['or', 'id=1', 'id=2']]) # WHERE type=1 AND (id=1 OR id=2) //第四种:并列或模糊 ->Wh......
场景的意义 模型可能在多个场景下使用,例如 User 模块可能会在收集用户登录输入, 也可能会在用户注册时使用。在不同的场景下, 模型可能会使用不同的业务规则和逻辑, 例如 email 属性在注册时强制要求有,但在登陆时不需要。(目前我的理解是场景主要用来做参数验证的) 使用示例(本示例以用户模型在注册,登录两个场景下的使用方法分析): // 场景作为属性来设置 $model = new User; $model->scenario = 'login'; 或 ......
Yii2中给我们提供了非常方便的日志组件,只需要简单配置一下就可以使用。 我们在 config/web.php 中配置如下: 'components' => [ ......其他配置项,这里省略 'log' => [ //消息跟踪级别,设置Yii\log\Dispatcher::traceLevel属性 'traceLevel'=> Yii_DEBUG ? 3 : 0, //日志目标,可定义多个 'targets' => [ [ 'class......
例如,执行 /console/controllers/TransferQifaProductDataToQifacnController.php 文件里的 actionFullSync 方法,则: php ./Yii transfer-qifa-product-data-to-qifacn/full-sync 模式为: ./Yii [command-name]/[method-name]
本文分享一下 Yii2 在命令行下生成 model 的示例,顺便总结了一下 Yii2 通过 gii 生成 model 文件的所需参数。 在项目的根目录下执行以下命令,是在 common/models/qifaCn/sale 目录下生成名为 QifacnProductsSales.php 的文件,该 model 文件的信息是根据 qifacn 数据库的 qifacn_products_sales 数据表生成的,继承自 QifaCnActiveRecord 类。 php Yii gii/model --ns=common\\models\\qifaCn\\sale --tableName="qifacn.qifa......
关于Yii如何使用自带的验证码,可以参考本站文章: Yii加载自带验证码的方法 但是以上操作仅仅加上了验证码功能,还有许多问题需要解决,比如你马上就会发现验证码添加好之后,刷新页面后验证码却不会自动刷新,下面就总结一下这个问题的解决方法,具体如下: 从网上搜到的资料基本上提供了三种解决方法。 一、修改源码CCaptchaAction.php的run方法,修改框架源码,不推荐。 二、写一个js,在页面刷新的时候调用js自动点击验......
Yii的源码包里面是自带有验证码的相关类的,因此在使用验证码的时候无需再加载外部验证码类来助阵了。下面本文将介绍一下如何在项目中加载Yii自带的验证码功能。 具体分三步: (1)在需要加载验证码的controllers文件里面添加如下代码: public function actions(){ return array( 'captcha'=> array( 'class'=>'Captcha', 'width'=>65, //默认120 'height'=>25, //默认50 'padding'=>0, //文字周边......
Yii模板中常用的一些变量总结。 现有这样一个url:http://www.phpernote.com/demos/helloworld/index.php/xxx/xxx 则通过如下方式获取的值对应分别为: 除域名外的首页地址 echo Yii::app()->user->returnUrl; // '/demos/helloworld/index.php' 当前页面url echo Yii::app()->request->url; // '/demos/helloworld/index.php/xxx/xxx' 当前域名 echo Yii::app()->request->hostInfo; // 'http://www.phpernot......
Yii model层操作属性和方法总结。 tableName – 设置Model所对应的表名,例如: public function tableName(){return 'gshop_order_ext';} rules – 设置Model里各字段的验证规则 relations – 设置关联规则 attributeLabels – 设置各字段的别名 safeAttributes – 设置可以修改属性的字段 beforeValidate和afterValidate – 字段验证前和验证后执行的函数, 需要返回true值 beforeSave和afterSave – 记录存储前和存储后......
Yii常见字段验证示例总结。 <?php class ContactForm extends CFormModel{ public $id; public $contact;//联系人 public $tel;//电话 public $fax;//传真 public $zipcode;//邮编 public $addr;//地址 public $mobile;//手机 public $email;//邮箱 public $website;//网址 public $qq;//QQ public $msn;//MSN public $add_time;//添加时间 public function ru......
Yii CDbCriteria的常用方法总结。 $criteria=new CDbCriteria; $criteria->addCondition("id=1");//查询条件,即where id = 1 $criteria->addInCondition('id',array(1,2,3,4,5));//代表where id IN (1,2,3,4,5,); $criteria->addNotInCondition('id',array(1,2,3,4,5));//与上面正好相法,是NOT IN $criteria->addCondition('id=1','OR');//这是OR条件,多个条件的时候,该条件是OR而非AND $criteria->addSearchC......
在开始使用Yii的时候,一直对校验规则中的safe不是很理解,今天测试了一下,算是搞清楚了safe的内涵。一直以为safe就是框架会对输入的内容进行过滤,比如sql注入之类的filter,其实并不是的,safe or unsafe的不同主要是在于$model->attributes=$_POST['User']; 这种赋值的方式在Yii中叫批量复制(Massive Assignment),当model中全部的属性都是safe的时候,表单提交的$_POST['User']的值可以全部赋给$model->attributes,然后再save......
Yii 使用PHPExcel导入Excel文件的方法,具体步骤如下: 一,PHPEXCEL 包下载页面:http://phpexcel.codeplex.com/ 二,将压缩包中的 classes 目录复制到 protected/extensions 下并修改为 PHPExcel。 三,修改Yii配置文件 config/main.php ...... 'import'=>array( ...... 'application.extensions.PHPExcel.PHPExcel', ...... ), ...... 四,创建控制器 (以下为处理 PHPExcel autoload 和 Yii autoload 相冲......
这篇文章主要介绍了Yii使用find findAll查找出指定字段的实现方法,非常实用的技巧,需要的朋友可以参考下。 用过Yii的朋友都知道,采用如下方法: modelName::model()->find() //找出的是一个对象 modelName::model()->findALL() //找出的是一个对象集合的数组 可以找出对象与对象集合的数组,那么如何找出我所需要的字段的数据,而不是全部字段的数据呢?之前我是这么做的: $criteria=new CDbCriteria; $criteria->s......
php Yii 框架中获取当前控制器名称和当前动作名称的方法。 1. 获取当前控制器名 在控制器中获取当前控制器名: $name=$this->getId(); 在视图中获取当前控制器名: $name=Yii::app()->controller->id; 2. 获取当前动作名 在控制器beforeAction()回调函数中获取当前动作名: $name=$action->id; 在其他地方获取当前动作名: $name=$this->getAction()->getId();
Yii获取上传文件的后缀名,主要是用CUploadedFile类中的getExtensionName()方法,例如: <?php ...... $form->image=CUploadedFile::getInstance($form->model, 'image'); $randName=date('Ymdhis').rand(100,999).'.'.$form->model->image->getExtensionName(); $form->model->image->saveAs(Yii::app()->basePath.'/../upload/'.$randName); ......
现在有如下数据: $user=array( 0=>array('id'=>1,'name'=>'张三'), 0=>array('id'=>2,'name'=>'李四'), ); 现在如果需将这两条数据批量插入到数据表的话,一般大家都会想到用foreach,然后调用 insert 或者 save 方法插入数据。但实际操作却是在foreach循环操作中,insert 只会插入第一条数据,save 却只会插入第二条数据。这是为什么呢?解释如下: 插入一行到基于这个ActiveRecord的属性表。如果表的主键是自动增量和......
使用Yii 的Active Record 来获取查询结果的时候,返回的结果集是一个对象类型的,但有时候为了数据处理的方便希望结果集是数组形式或者JSON格式的。那该怎么办呢? 将Yii对象结果转为数组 // 查找满足指定条件的结果中的第一行 $post=Post::model()->find($condition,$params); // 查找具有指定主键值的那一行 $post=Post::model()->findByPk($postID,$condition,$params); // 查找具有指定属性值的行 $post=Po......
Yii框架中的一些常见的路径方法的使用方法总结。 在控制器添加CSS文件或JavaScript文件: Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/my.css'); Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/css/my.js'); <?php echo $this->module->assetsUrl; ?>/css/main.css 调用Yii框架中framework/web/js/source的js,其中registerCoreScript key调用的文件在framework/web/js/......
一个稍微大点的项目,如果按照Yii生成的webapp进行开发。所有的controller放到controllers文件夹下,所有的model放到models文件夹下面,如果你有 n 多个 controller 和 n 多的 model ,这种情况下维护代码将是一个非常痛苦的过程。为了避免这种情况,Yii 提供了一种 Modules(模块) 的目录结构方式。 Modules(模块) 是一个独立的单元,包含视图、控制器和其它组件,它和一个应用的区别是不能单独部署,模块都保存在应用的 moudules......
将 Yii 中比较常用的rules验证规则记录一下,回头认真研究一下。 return array( //必须填写 array('email, username, password,agree,verifyPassword,verifyCode', 'required'), //检查用户名是否重复 array('email','unique','message'=>'用户名已占用'), //用户输入最大的字符限制 array('email, username', 'length', 'max'=>64), //限制用户最小长度和最大长度 array(......
Yii框架是支持数据库事务处理的,关于事务,这里就不多说了,想要了解的读者可以参看本站文章: 关于数据库(MySQL)事务 在项目中遇到批量删除的地方一般会使用到事务,下面列举一个用法实例与大家分享。 <?php $array=array( 0=>array('username'=>'phpernote.com_0','password'=>'123456'), 1=>array('username'=>'u_1','password'=>'123456'), 2=>array('username'=>'u_2','password'=>'123456') ); $transaction=......
本文介绍了Yii框架中配置默认controller和action的方法,分享一个设置默认controller和action的例子,有学习Yii的朋友可以参考下,个人感觉还不错的。 在Yii框架中,设置默认 controller 在/protected/config/main.php添加配置,具体代码如下: <?php return array( 'name'=>'Auto', 'defaultController'=>'auto', ...... 上述配置了默认的 controller 为 AutoController.php 在Yii框架中,设置默认 action 在刚才定......
本文分享一下在Yii框架下查看当前页面执行的所有sql语句的方法,主要是通过配置相关文件来达到调试sql的目的,具体方法如下: (1)修改 index.php 开启调试模式 在 index.php 文件内增加如下两行代码(如果不存在的话): //开启调试模式 defined('Yii_DEBUG') or define('Yii_DEBUG',true); //设置日志记录级别,Yii_TRACE_LEVEL的数字越大,信息越清楚 defined('Yii_TRACE_LEVEL') or define('Yii_TRACE_LEVEL',3); (......
缓存是用于提升网站性能的一种即简单又有效的途径。稍微有点规模的网站都会通过存储相对静态的数据至缓存以备所需,这样我们可以省去从数据库查询然后生成这些数据的时间,通过减轻数据库的压力从而提升网站的性能。 Yii作为一个强大的php开源框架,再缓存这块,Yii对各种流行的缓存都提供了接口,我们可以根据实际的需要使用不同的缓存。 Yii的缓存相关组件存放在Yii/framework/caching的目录内,通过查看该目录,我们可以知道y......
动作就是指被定义为一个以action单词作为前缀命名的方法。而更高级的方式是定义一个动作类并让控制器在收到请求时将其实例化。这使得动作可以被复用,提高了可复用度。 1、定义一个动作类,基本格式如下: class UpdateAction extends CAction{ public function run(){ //...逻辑代码... } } 2、使用动作类:为了让控制器注意到这个动作,我们要用如下方式覆盖控制器类的actions()方法: class PostController ex......