$this->widget('zii.widgets.ClistView',array(
'dataProvider' => $dataprovider,
'itemView' => '_view',
'template' => '{items}{sorter}{pager}',
'sortableAttributes' => array(
),
));
CGridView的使用也结合$dataprovider,
用的时候主要是对columns的配置,主要有
CDataColumn, CLinkColumn, CButtonColumn and
CCheckBoxColumn.具体用法看api
总的说来CgridView没有ClistView灵活
插入meta信息
Yii::app()->clientScript->registerMetaTag('keywords','关键字');
Yii::app()->clientScript->registerMetaTag('description','一些描述');
CMap::mergeArray()
比array_merge更智能的合并数组,yii中配置的合并用这个
CClipWidget 通过ob_start
ob_getconent生成一段不显示的内容,可以能过CController::clips访问,如
$this->beginWidget('CClipWidget',array('id'=>'name','renderClip'=>true));
可以通过$this->clips['name']来显示,其中的renderClip如果为false,则在当前位置不显示内容
获得服务器时间
$_SERVER['REQUEST_TIME']
维护程序时,这样子所有的请求转发到一个地方
'catchAllRequest'=>array('site/all'),
根据二级域名缓存
array(
'COutputCache + search',
'duration' => 120,
'varyByParam' => array('q','page'),
'varyByExpression' =>
"app()->request->hostInfo",
),
有多个分站时,同步登陆,
基于cookie
'user'=>array(
'identityCookie'=>array('domain'=>'.dayouhui.com'),
'allowAutoLogin' => true,
)
如果是基本于session
'session' =>
array(
'cookieParams' => array('domain' => '.dayouhui', 'lifetime'
=> 0),
'timeout' => 3600,
),
如何使用theme
在main.php中配置
'theme'=>'classic',
如何得到前前使用的主题
Yii::app()->theme
得到主题名字
Yii::app()->theme->name;
themes文件夹和protected是同级的,其下边某个theme的目录结果同protected/views下一样
关于skin
用theme改变view的外观,skin是用来改变widgets的外观的
skin是健值对用于初始化一个widget的属性
要对widget使用skin,需要做以下几步
1:配置'widgetFactory'=>array(
'enableSkin'=>true,
),
2:在views下建立skins目录
3:在skins目录下建立与Widget名子一样的php文件,返回数组,即能用于widget的初始配置
4:在php文件中,如果有defautl的配置,会先找这个skin
5:如果应用了theme,程序会先去对应的theme目录下的skins中找配置文件
6:如果只是想给widget统一一个skin,建议用Customizing Widgets Globally
如果防止post跨站攻击
'request'=>array(
'enableCsrfValidation'=>true,
),
这时候生成的表单要用CHtml::form(),其会写一段代码在cookie中
防止Cookie攻击
'request'=>array(
'enableCookieValidation'=>true,
),
同时生成与得到cookie是要用 CHttpCookie
如何让表单验证不驼过的提示为中文
在main.php的配置中加上
'language' => 'zh_CN',
如何实现仿google的自动完成功能
widget('CAutoComplete',
array(
'name'=>'xxx',
'url'=>array('suggestTags'),
'multiple'=>false,
'htmlOptions'=>array('size'=>50),
)); ?>
然后在url指定的地址中的方法中如下输出,即可
echo "a\nb\nc"
CGridView详解
这东西在后台比较有用,能加速开发的速度,值得一看
CGridView用表格的方式显示数据项
每一行代表一个数据项,一列通常代表数据项的一个属性
CGridView支持排序和分页,可以用ajax或普通的方式
CgridView必序和data provider一起使用
最简单的用法
$dataprovider = new
CActiveDataProvider('Post');
$this->widget('zii.widgets.grid.CGridView',array(
'dataProvider'=>$dataprovider,
));
这会用表格的方式显示每一条数据项,每一列是Post的一个属性
在显示中带了分页和排序
我们可以自定义CgridView::columns属性,以自定义表格列的显示方式
这个cloumns如何配置呢?
其是一个数组,每一个数组元素对应着一列的配置,可以是字符串或数组
1、如果是字符串,格式是name:type:header
后两者是可选的,根据这三个值,创建一个CdatColumn实例
其中type参见CFormatter
2、如果是数组,其可以实例化CDdataColumn、ClinkColumn,CButtonColumn,CCheckBoxColumn实例,具体实例化哪个
由数组中的class指定,默认是CDataColumn
2.1,如果class=>'CDataCloumn'
则可以指定name或者value,如果指定以value优先
用CDataColumn时如何以关联表的数据序列?
代码如下:表示可以post关联的author中的username排序列