Yii使用技巧大汇总(3)

ClistView同上结合使用,其中的_view中可以用一个$data的变量,代表当前的model数据
如果dataProvider中的pagination,sort设为false,则CliveView中对应的部分也无法使用

$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,则在当前位置不显示内容

如果在Model一次验证多个属于,显示不同的内容?如下  [后来发现这个不起作有]

return array( array('title, content', 'required', 'message'=>'Please enter a value for {attribute}.'), // ... other rules );

获得服务器时间

复制代码 代码如下:

$_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的自动完成功能

<?php $this->widget('CAutoComplete', array( 'name'=>'xxx', 'url'=>array('suggestTags'), 'multiple'=>false, 'htmlOptions'=>array('size'=>50), )); ?>

然后在url指定的地址中的方法中如下输出,即可

echo "anbnc"
//CGridView详解

这东西在后台比较有用,能加速开发的速度,值得一看

CGridView用表格的方式显示数据项

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

转载注明出处:http://www.heiqu.com/2f8106786391352ef2279db1bd51a4b1.html