Yii
文章平均质量分 70
陈小峰_iefreer
创办踏得网,写了Stone、Myway、MyAvatar 3D等元宇宙引擎。
展开
-
Yii1中Model中Relation定义和with、together方法使用注意点
在Yii中如果使用Model(ActiveRecord)来完成联合查询,我们首先需要在Model中定义关联关系。Yii并不会默认进行关联查询,我们需要使用类似如下的代码:Article::model()->with('Category')->together()->find...这个语句将按照在Model中定义过的Relations来建立关联查询语句,默认LEFT JOIN。如果不使用togeth原创 2016-05-29 09:18:50 · 10568 阅读 · 0 评论 -
Yii1.1应用升级到Yii2.0的一些注意点
1. Yii2在视图层的一个显著改变是引入了视图类,所以相关附属类就you原创 2014-08-15 14:58:11 · 10472 阅读 · 1 评论 -
Yii2创建多界面主题(Theme)
Yii2界面方案的设计总体上和Yii1.x保持一致,区别在原创 2014-08-25 09:24:10 · 13225 阅读 · 0 评论 -
Yii2设置网页标题
在Yii2中,页面标题是View类的一个公有成员(public)变量原创 2014-08-25 00:34:30 · 10383 阅读 · 0 评论 -
Yii2权威指南中文版及众包翻译平台
Yii2在今年4月份发布了beta版本,相信下半年会推出正式原创 2014-07-23 01:16:48 · 8530 阅读 · 2 评论 -
Yii2版本新特性简介
Yii2 Beta版本在今年4月份发布,目前正在修改问题和完善文档中。Yii2要求PHP版本不低于5.4,主要有如下改进:1)支持PHP框架间协作组制定的PSR-4标准,这简化了目录并提高了类自动加载速度 2)内置支持Restful API框架 3)支持依赖注入(Dependency Injection)和服务定位(Service Locator) 4)支持大批量数据查询 5)AR添加对redis原创 2014-06-04 22:14:36 · 5277 阅读 · 0 评论 -
Yii2日志使用方法
Yii2里面日志的使用方法和Yii有dia原创 2014-09-06 21:21:53 · 33929 阅读 · 0 评论 -
Yii/Yii2:查询返回以某特定列为索引(键)的数组
在Yii1.x中,查询特定列为键(key)的数组,原创 2014-08-23 00:06:07 · 20772 阅读 · 0 评论 -
Yii2快速构建RESTful Web服务功能简介
Yii2一个重要的功能升级是内置完整的RESTful支持。只需要简单的配置就可以为已有资源创建一整套服务,且包含开箱即用的安全(如OAuth2)、访问速率、定制字段、内容协商等等高级接口支持。原创 2014-07-29 21:32:43 · 32497 阅读 · 4 评论 -
Yii使用renderPartial绘制的CGridView中checkall功能无效
原因是使用renderPartial方法绘制的界面没有加载l原创 2014-11-12 22:16:26 · 2165 阅读 · 1 评论 -
Yii 表单输入数据保存不成功
Yii的Model可以对用户输入进行kong原创 2014-11-12 12:22:03 · 4938 阅读 · 0 评论 -
Yii CGridView的内联列编辑
Yii CGridView表格组件可以用来很好的展示shuju原创 2014-11-20 01:26:31 · 2332 阅读 · 0 评论 -
Yii 直接执行SQL语句的几种使用方法
yii1.x中直接使用sql查询(非ActiveRecord方式)的几个函数(execute/query/queryAll/queryRow/queryColumn/queryScalar)的简单使用方式。原创 2015-09-17 16:30:54 · 24554 阅读 · 0 评论 -
Yii 跨数据库关联关系
要在两个数据库实例(同一个server)上进行关联数据查询,纯SQL语句如下:select a.*,b.* from db1.user as a,db2.log as b where a.id=b.user_id;要在Yii1 Model中支持这个,需要修改下user模型类的getDbConnection和tableName方法如下: /** * @return CDbConnection d原创 2015-07-31 18:54:52 · 4259 阅读 · 1 评论 -
Yii 自定义表单验证规则和客户端验证
Yii使用rules来定义验证规则,缺省情况是在服务器端验证,如果想在客户端验证,那么需要给CActiveForm传递enableClientValidation参数。对于大部分情况上述规则就能满足需求,Yii会自动生成相应的客户端JS验证脚本。但对于一些自定义的界面控件,例如时间选择控件,要求对时间的取值做一定的范围约束,那么就需要用到自定义验证规则了。原创 2015-06-09 22:34:11 · 5098 阅读 · 0 评论 -
Yii CActiveForm 客户端验证(enableClientValidation)和自定义验证
使用Yii的CActiveForm默认使用服务器端模型(model)的rules规则验证数据。但这会导致无谓的请求提交,比较好的方式是为了用户体验在客户端也验证,而为了安全性,在服务器端和数据库也做验证和限制。要启用CActiveForm的客户端验证,可以使用enableClientValidation参数: beginWidget('CActiveForm', array(原创 2015-06-04 15:30:28 · 5435 阅读 · 0 评论 -
Yii:在ajax刷新中使用CJuiDatePicker日期控件
如果在ajax更新界面中使用到了CJuiDatePicker组件,那么注意需要重新执行jquery ui datepicker JS的初始化脚本,日期控件才能生效。另外datepicker控件依赖于jQuery UI插件,所以需要注册jquery ui的CSS和JS文件。原创 2015-05-01 00:15:13 · 2194 阅读 · 0 评论 -
CentOS6系统上Yii/Yii2/Nginx/PHP-FPM配置实例
Yii应用Apache的配置比较简单,nginx的配置主要需要处理单一入口文件的问题.原创 2015-03-16 21:28:26 · 9972 阅读 · 3 评论 -
Yii2 定制表单输入字段的标签和样式
Yii2中对于表单和字段的支持组件为ActiveForm和ActiveField,要生成一个具有label、input、error提示这样通用格式的登录框,可编写如下代码: <?php $form = ActiveForm::begin([ 'id' => 'login-form', 'options' => ['class' => 'form-horizon原创 2015-01-12 22:16:33 · 50417 阅读 · 1 评论 -
Yii DataProvider和CGridView的几个小提示
1. CSqlDataProvider和CGridView一起使用时,设置列值不能使用$data->id,而是用$data["id"],因为sqldataprovider返回的是数组形式的数据。2. 使用queryScalar执行count(*)的sql语句时,不能使用group by,否则个数为1,相应的CGridView分页会失败3. 为CGridView添加导出excel功能时,对于中文数据原创 2014-12-19 12:59:44 · 2594 阅读 · 0 评论 -
Yii: 组件加载逻辑及自定义组件覆盖
有时候会遇到自己定义的组件没有被成功加载或者被覆盖的情况,那么就需要搞清楚组件加载的逻辑,以及可能被覆盖的情况。Yii中组件components的加载是在CApplication被实例化的时候执行的,如下: public function __construct($config=null) { ...... $this->preinit(); $this->initSystemH原创 2013-12-21 12:52:48 · 7285 阅读 · 3 评论 -
CentOS6.2平台升级PHP5.3.28到PHP5.5.14
由于一些新的开发平台只支持原创 2014-07-22 09:33:43 · 8446 阅读 · 1 评论 -
ufcms:yii based cms system programming notes
Note: ifCMS(originally named as ycms, but was found confliction with another one, so renamed to ifCMS, which simply means CMS created by iefreer) it is targetted to be a high performance-full function原创 2012-12-22 01:48:31 · 3960 阅读 · 5 评论 -
Yii框架模型类的实现以及PHP5动态语言特性的应用
Yii框架提供一个代码生成器gii, 我们一般用它来生成模型类代码。模型类是对数据(表)操作进行封装 不过在模型类中你看不到get/set属性的方法,甚至看不到和表字段关联的属性成员变量,但并不影响我们直接操作其属性,仿佛这些属性就在那里一样。其具体实现方式,正是一些设计模式和PHP5动态语言特性的一个很好的应用案例。举个例子,如下一个用户模型类,对应的数据表为users<?phpclass原创 2013-05-30 22:31:11 · 4589 阅读 · 0 评论 -
Spring3和Yii示范程序性能初探
Spring和Yii是Java和PHP语言各自的代表性框架。对其demo程序做压力测试可以加深对PHP/Java两种语言之间差异性的理解,从而有助于做架构评估。下面分别对Spring3的示范程序petclinic和Yii1.1.13的示范程序blog做了性能测试,这两个程序都是简单的请求-〉少量数据读取处理-〉页面返回,属于同一轻量级别应用,是可以比较的。[测试环境]ThinkPAD X1 Car原创 2013-07-30 21:30:21 · 4567 阅读 · 1 评论 -
Yii::记录日志到自定义文件
默认情况下,Yii::log($msg, $level, $category)会把日志记录到runtime/application.log文件中日志格式如下:[时间] - [级别] - [类别] - [内容]2013/05/03 17:33:08 [error] [application] test但有时候需要把某些特定的日志放到特定的文件中,比如交易失败的日志,需要和其他日志区分开来单独记录。在原创 2013-05-03 18:27:22 · 19856 阅读 · 0 评论 -
Yii: 创建cronjob定时任务
1. 添加环境配置protected/config/console.php<?phprequire_once('env.php');// This is the configuration for yiic console application.// Any writable CConsoleApplication properties can be configured here.原创 2013-04-01 10:39:44 · 12082 阅读 · 0 评论 -
Yii: MySql - Table 'card' was not locked with LOCK TABLES
遇到标题上面的错误信息,通常是因为某个进程锁了表1,在没有释放锁时,想要访问另外一个表2,这个在mysql中是不允许的,该错误信息的含义很明白,表card没有被锁,所以不能执行查询或更新语句。详细解释参见mysql手册:A session that requires locks must acquire all the locks that it needs in a single LOCK TA原创 2013-03-28 21:26:55 · 12866 阅读 · 1 评论 -
Yii: 如何把JS脚本添加到CGridView数据行的操作按钮中
可以简单的添加到按钮的url属性中,把链接改为js, 然后在js中调用相关的ajax请求,示范如下 array( 'class'=>'FButtonColumn', 'header'=>Yii::t('Trade','Actions'), 'template'=>'$data->getTemplate()',原创 2013-03-06 22:28:38 · 3281 阅读 · 0 评论 -
Yii: 如何在CGridView通过Ajax方式刷新数据后执行JS脚本
Yii框架中的CGridView控件数据刷新是通过Ajax方式来实现的,如果有一些js脚本是在页面加载或重新加载的时候执行,那么在CGridView控件刷新的时候,这些js就得不到执行。这样会导致表格数据得到了更新,但部分js效果丢失的情况。解决的方法很简单,把页面加载时执行的js语句封装为函数,然后设置CGridView的afterAjaxUpdate属性,如下:'afterAjaxUpdate原创 2013-03-06 22:08:39 · 4737 阅读 · 1 评论 -
Yii: 扩展CGridView增加导出CSV功能
Yii提供的CGridView组件没有内置数据导出功能,不过我们可以通过扩展该组件来添加该功能。具体方法如下:1、首先派生一个子类,添加一个action成员,在该视图的init函数中判断是浏览动作还是数据导出动作,如果是浏览动作者则保持默认行为,否则输出csv文件。 public function init() { if($this->acti原创 2013-02-20 21:17:00 · 4344 阅读 · 0 评论 -
Yii: URL管理规则中命名参数使用注意点
问题描述Yii支持URL命名参数这样的模式匹配方式,具体参见http://www.yiiframework.com/doc/guide/1.1/en/topics.url我们可以把这些规则放在配置文件里,但不够弹性,不能在后台方便的进行管理变更。那么可以把它们放到数据库里面,建立一个url_rules表,但由于Yii的URL命名参数格式比较特别:array( 'post/'=>'post/原创 2014-01-24 02:11:04 · 4482 阅读 · 0 评论 -
Yii: CActiveRecord::save方法保存记录提示Duplicate entry错误
在Yii中,使用CActiveRecord::save()方法保存数据,对于新记录会使用insert into语句,而对于已有记录,会使用update语句。参见Yii的说明:"Saves the current record. The record is inserted as a row into the database table if its isNewRecord property is原创 2014-02-27 01:33:57 · 7869 阅读 · 0 评论 -
Yii: CDbCriteria未定义compare方法错误
(Yii版本高于1.1.1,这个函数是这个版本之后引入的,本错误和版本无关)对象是通过下面的方法创建的,$dbc = new CDbCriteria();$dbc->order = $_GET['orderBy'];$dbc->compare('t.id',$ids);报错:Call to undefined method stdClass::compare()这个错误很奇怪,明明CDbCri原创 2014-03-11 00:26:35 · 4873 阅读 · 1 评论 -
Yii:CHtml::ajaxLink方法在URL format为path情况下的多参数传递示例
echo CHtml::ajaxLink('delete', array('/Social/comment/delete', 'id'=>$data->Id, 'type'=>'brief', 'key'=>$data->key), array( 'success'=>'function(){ $("#ext-comment-原创 2014-06-04 17:08:47 · 4954 阅读 · 0 评论 -
Yii:如何动态改变CDataColumn的htmlOptions属性
我们知道CGridView的CDataColumn可以设计htmlOptions属性,原创 2014-05-11 22:53:29 · 5258 阅读 · 0 评论 -
Yii: 配置命令行命令目录
默认情况下Yii的命令行命令都放在protected/commands目录下面,可以使用/path/to/entry_script.php help查看命令列表如果你想定制该目录,可以在配置文件中进行配置:return array( 'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..', 'commandPath'=>dirn原创 2014-03-26 00:56:57 · 3628 阅读 · 0 评论 -
Yii:给CGridView的某列添加操作按钮
派生CDataColumn的子类,覆盖CDataColumn的renderFilterCellContent函数:class YourDataColumn extends CDataColumn{ public $rowActions=array(); public $isRowActions = true; /** * Renders the原创 2014-03-25 02:55:39 · 3035 阅读 · 0 评论 -
ufcms:从windows/apache转到linux/nginx
关联链接:ufcms:yii based cms system programming notes主要有两点:1. 需要把apache vhost的配置改为nginx vhost的配置2. 需要把.htaccess文件修改为符合nginx语法规则的文件nginx vhost配置参考如下: server { listen 80; server_nam原创 2012-12-24 13:56:28 · 3070 阅读 · 3 评论 -
Yii: 片段缓存的使用
Yii没有插件支持页面静态化,但很好的支持页面片段缓存,虽然仍然需要经过PHP处理,考虑到网络因素,已经能和静态页面达到差不多的性能效果。下面是代码示范,解决的问题是根据用户会话情况来判断缓存的使用:beginCache('USER_DIV', array('varyBySession'=>1))) { ?> endCache(); } ?>如果使用的是文件缓存,该片段缓存保存在cache原创 2014-03-19 22:57:03 · 3585 阅读 · 1 评论