YII的赋值功能tips(3)

$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排序列

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/11218.html