Yii::app()->request->urlReferrer;
accessControl 是Ccontroller中內(nèi)置的過濾方法,其它的還有ajaxOnly postOnly
CMaskedTextField此組件用于限制用戶的輸入,對應(yīng)的jquery插件http://digitalbush.com/projects/masked-input-plugin/
在一對多,多對多查詢時,the eager loading 聯(lián)合所有的表生成一條語句,如果主表有l(wèi)imit的查詢選項,那么他將單獨執(zhí)行,然后再執(zhí)行與關(guān)聯(lián)表有關(guān)的語句,返回相關(guān)表的數(shù)據(jù)對象,這就是為什么在做大優(yōu)惠時,以中間表為查詢條件出錯的原因,解決辦法
with()返回 CActiveFinder對象,其方法together(),既使主表中有LIMIT/OFFSET 也是返回一條sql;
多對多查詢時,分頁有時候頁中顯示的條數(shù)不正確,因為有重復(fù)的項,加上$criteria->group = true即可
模型的rules中,驗證某個字段不能重復(fù),array('name', 'unique','message' => '有重復(fù)的名子'),
CStatePersister是yii的核心組件,提供了基于文件的數(shù)據(jù)保存方式,可以不在同的請求中使用
COutputCache 即是一個組件,又是一個filter,前者的時候用于在view中緩存內(nèi)容,后者的時候用于在controller中緩存
就是說片段緩存,是把COutputCache當(dāng)一個widget來用,頁面緩存把COutputCache當(dāng)作一個filter來用
動態(tài)緩存,用CController的一個方法 renderDynamic($callback);
在布署模式的時候,有錯誤不會有stack樣的提示,會顯示一個errorxxx的錯誤
如何在程序有錯的時候跳到指定的action
在components中設(shè)置
'errorHandler'=>array(
'errorAction'=>'site/error',
),
在此action中可以能過Yii::app()->errorHandler->error獲得錯誤信息
把字符串分解成數(shù)組,并去掉空值
preg_split('/\s*,\s*/','this , is , , a test',-1,PREG_SPLIT_NO_EMPTY )
CActiveRecord::exits();判斷有沒有這樣的記錄,一般用于添加時,判斷某字段有沒有重復(fù)
CActiveDataProvider 一個基于ActiveRecord的數(shù)據(jù)提供源
常用的用法
$dataProvider=new CActiveDataProvider('Post', array(
'criteria'=>array(),
'pagination'=>array(),
'sort'=>array(),
));
ClistView同上結(jié)合使用,其中的_view中可以用一個$data的變量,代表當(dāng)前的model數(shù)據(jù)
如果dataProvider中的pagination,sort設(shè)為false,則CliveView中對應(yīng)的部分也無法使用
$this->widget('zii.widgets.ClistView',array(
'dataProvider' => $dataprovider,
'itemView' => '_view',
'template' => '{items}{sorter}{pager}',
'sortableAttributes' => array(
),
));
CGridView的使用也結(jié)合$dataprovider,
用的時候主要是對columns的配置,主要有
CDataColumn, CLinkColumn, CButtonColumn and CCheckBoxColumn.具體用法看api
總的說來CgridView沒有ClistView靈活
插入meta信息
Yii::app()->clientScript->registerMetaTag('keywords','關(guān)鍵字');
Yii::app()->clientScript->registerMetaTag('description','一些描述');
CMap::mergeArray() 比array_merge更智能的合并數(shù)組,yii中配置的合并用這個
CClipWidget 通過ob_start ob_getconent生成一段不顯示的內(nèi)容,可以能過CController::clips訪問,如
$this->beginWidget('CClipWidget',array('id'=>'name','renderClip'=>true));
可以通過$this->clips['name']來顯示,其中的renderClip如果為false,則在當(dāng)前位置不顯示內(nèi)容
如果在Model一次驗證多個屬于,顯示不同的內(nèi)容?如下 [后來發(fā)現(xiàn)這個不起作有]
return array(
array('title, content', 'required',
'message'=>'Please enter a value for {attribute}.'),
// ... other rules
);
獲得服務(wù)器時間
$_SERVER['REQUEST_TIME']
維護(hù)程序時,這樣子所有的請求轉(zhuǎn)發(fā)到一個地方
'catchAllRequest'=>array('site/all'),
根據(jù)二級域名緩存
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;
如果防止post跨站攻擊
'request'=>array(
'enableCsrfValidation'=>true,
),
這時候生成的表單要用CHtml::form(),其會寫一段代碼在cookie中
如何讓表單驗證不駝過的提示為中文
在main.php的配置中加上
'language' => 'zh_CN',
如何實現(xiàn)仿google的自動完成功能