分类目录归档:Yii

CMenu的使用心得

先看代码段:

$this->widget('zii.widgets.CMenu',array(
    'items'=>array(
        array('label'=>'网站概况', 'url'=>array('/admin'),'itemOptions'=>array('class'=>'li_status'),'active'=>$this->id=='admin'?true:false),
        array('[......]

阅读全文»

YII+DWZ,制作了DwzActiveForm,用于自动把Yii的rules与dwz已整合的validate结合

YII自带validate.js的验证,但我细读源码,发现其规则主要是提交后返回的,而DWZ整合validate.js是直接在提交时客户端验证,更为方便有效率。

model中定义的rules已经把属性的要求都写清楚,如果再为了validate又在view里手写一次,实在是麻烦,所以我有了写DwzActiveForm的想法。

1、在Yii源码中找到CActiveForm,复制出新的Widget命名DwzActiveForm放在ext.dwz中。

2、自定义一个方法addValidateAttr($mo[……]

阅读全文»

使用 yii 实现 REST 风格接口

在 PHP 界有很多开发框架, yii 是其中一个比较优秀的框架。很多人都说 yii 比较复杂,先上手可以学习 ci 、 cakephp 什么的,其实我倒不这么认为, PHP 现在的框架一般整体的思路都差不多,都号称 MVC 那一套,其实关于是不是 MVC ,怎么个 MVC 法,这个话题太大,坑太深,不谈。其实,也就是说大家抽象的方式都类似,所以如果是要将 PHP 作为工具实用,而非研究,那就还是直接从牛人的肩膀上开始吧。当然,除了 yii 我另外还推荐 Laravel 框架。我个人感觉 php 的框架到[……]

阅读全文»

Yii 分页排序

‘defaultOrder’=>array(‘title’ => false), false是升序,true是倒序

1.自定义分页

使用CPagination呈现相关信息到页码. 当数据需要渲染到多页时,我们可能使用去呈现信息,诸如itemCount, pageSize, currentPage,等等. 这些信息被传递到pagers

$sql = "SELECT * FROM USER";
$data = Yii::app()->db->[......]

阅读全文»

Yii中的relations方法

以Blog示例:重点看注释

User类中的relations方法如下

public function relations()
{
    return array(
    	'posts' => array(self::HAS_MANY, 'Post', 'author_id',
    		'order'=>'posts.update_time DESC',
    		'with'=>'comments:approved',  // $user =[......]

阅读全文»

Yii 多表关联relations

1,首先多表关联是在models/xx.php的relations里配置的。而且是互配,但有区别。

格式:

'VarName'=>array('RelationType', 'ClassName', 'ForeignKey', ...additional options)

需要弄清楚的几点:

1,VarName指什么? 详见下面例2。

2,RelationType。一共有4种,分别为self::HAS_MANY, self::BELONGS_T[……]

阅读全文»

Yii分页的写法

AR写法:

$CDbCriteria = new CDbCriteria();
$CDbCriteria->order = '`id` desc';
$count=MessageModel::model()->count($CDbCriteria);
$pages=new CPagination($count);
$pages->pageSize=8;
$pages->applyLimit($CDbCriteria);
$model = MessageModel::m[......]

阅读全文»

为Yii Blog添加rss功能

使用了Yii的efeed扩展(地址:http://www.yiiframework.com/extension/efeed/)

把文档中的代码修改下放入view:

<?php
Yii::import('ext.feed.*');
$feed = new EFeed(EFeed::ATOM);
$title=$catalog?Yii::app()->name.' - '.$catalog->Label:Yii::app()->name;
$feed-&[......]

阅读全文»

Yii 实现MySQL多库和读写分离

前段时间为SNS产品做了架构设计,在程序框架方面做了不少相关的压力测试,最终选定了YiiFramework,至于为什么没选用公司内部的PHP框架,其实理由很充分,公司的框架虽然是”前辈”们辛苦的积累,但毕竟不够成熟,没有大型项目的历练,犹如一个涉世未深的年轻小伙。Yii作为一个颇有名气开源产品,必定有很多人在使用,意味着有一批人在维护,而且在这之前,我也使用Yii开发过大型项目,Yii的设计模式和它的易扩展特性足以堪当重任。

SNS同一般的社交产品不同的就是它最终要承受大并发和大数据量的[……]

阅读全文»