关于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://php.hhsy.cc/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'=>'hh.hhsy.cc_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......
Yii框架是一个纯面向对象的框架,这个框架在运行的时候,也就是一个应用被访问的时候,需要创建许多对象,这些对象再调用许多相关方法,从而完成一次web请求。 这个Yii::app() 是第一个被创建的对象,由这个对象调用相关方法,完后后续工作。 Yii::app()主要负责一些全局性的功能模块,比如Yii::app()->getUser()返回的是CWebUser实例(用于表达当前用户的验证信息)。因为CWebApplication继承CComponent,所以Yii::app()->getUs......
本文总结了Yii中关于数据信息的添加数据,修改数据,删除数据的相关操作,刚刚学习没几天,仅记录了一些,以后慢慢再充实,有需要的朋友可以看看。 添加数据的方法 (1)save 方法(对象形式操作) $user=new User; $user->username='phpernote'; $user->password='123456'; if($user->save()>0){ echo '添加成功'; }else{ echo '添加失败'; } (2)insert 方法(数组形式操作) Yii::app()->dbName->cr......
从版本 1.1.4 开始,Yii 提供了对自动动作参数绑定的支持。就是说,控制器动作可以定义命名的参数,参数的值将由 Yii 自动从 $_GET 填充。 为了详细说明此功能,假设我们需要为 PostController 写一个 create 动作。此动作需要通过$_GET传递两个参数: category:一个整数,代表帖子(post)要发表在的那个分类的ID。 language:一个字符串,代表帖子所使用的语言代码。 从 $_GET 中提取参数时,我们可以不再像下面这样写相关......
Yii框架下关于数据库查询数据的方法总结。 (1)$result=Yii::app()->dbName->createCommand($sql)->queryRow(); 返回的结果集如果不为空的话则为一个一维数组。代码中的dbName为数据表所在的库的名字,$sql可以为任意SQL语句。 (2)$result=Yii::app()->dbName->createCommand($sql)->queryAll(); 返回的结果集如果不为空的话则为一个二维数组。代码中的dbName为数据表所在的库的名字,$sql可以为任意SQL语句。 (3)$resul......
本文详细的列举了用Yii开发一个项目的目录结构以及目录说明,正在学习php框架Yii的朋友可以收藏看看。 /****Yii核心源码目录结构说明****/ |--framework 框架核心库 |--base 底层类库文件夹,包含CApplication(应用类,负责全局的用户请求处理,它管理的应用组件集,将提供特定功能给整个应用程序);CComponent(组件类,该文件包含了基于组件和事件驱动编程的基础类,从版本1.1.0开始,一个行为的属性(或者它的公......