此文意在記錄 Yii 開發(fā)過程中的小問題解決方案,不全面,不權(quán)威,不是教程。自己寫過,覺得可以解決問題,以后也可能用上,就記記吧。
1. Yii 中 Js 和 Css 文件的引入。
我們就從最簡單的問題開始吧,說起來也不是問題,只是語法罷了。假設(shè)我們的 js 文件都放在和 protected 同一層的 js 文件夾里,css 文件都放在和 protected 同一層的 css 文件夾里,好吧,規(guī)范就是這樣的...那我們可以在對應(yīng)的 view 界面按下面這樣寫,css 和 js 函數(shù)的參數(shù)是不同的哦...(之前因為這個調(diào)了一個小時..)
注冊 js 文件的第二個參數(shù)是 js 所放的位置,可選三個:CClientScript::POS_HEAD 放在 Head 部分 CClientScript::POS_BEGIN 放在 Body 開始處 CClientScript::POS_END 放在 Body 結(jié)束處,沒有特別要求就不用填了...注冊 Css 文件的第二個參數(shù)是 media,,有興趣的同學點這里,目前還是默認就好...
對于 Jquery 這樣的 js ,用 registerCoreScript 不會造成莫名奇妙的錯誤...
//注冊 js 文件 Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/js/project1.js',CClientScript::POS_HEAD); //注冊 css 文件 Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/project1.css'); //注冊 Jquery 文件 Yii::app()->clientScript->registerCoreScript('jquery');
2. Yii isNewRecord 修復(fù)
Yii 的 Model 的 isNewRecord 屬性是很好用的,可以根據(jù)這個屬性進行分情況討論。但是,假如我們開啟了事務(wù)機制或是其他情況,造成數(shù)據(jù)插入后又被回滾了,這時數(shù)據(jù)庫里沒有該條記錄,但是 isNewRecord 是 flase,即認為已經(jīng)不是新紀錄了。解決方法是用主鍵去訪問數(shù)據(jù)庫,判斷究竟是不是新紀錄,而我們在用到這個屬性之前要先按下面處理一下。以下 Model 是 Post,主鍵是 id:
if(!$model->isNewRecord) { $db_exist = Post::model()->findByPk($model->id); if($db_exist == NULL) $model->isNewRecord = true; }
3.Yii 生成 隱藏輸入域
雖然自己寫一個輸入域很容易(不就是 display:none 嘛),但是有時架不住需要按照 Yii 的表單代碼格式呀,反正就一句話...
<?php echo $form->hiddenField($model,'name'); ?> <?php if($model->isNewRecord) echo $form->hiddenField($model,'path',array('size'=>60,'maxlength'=>128,'id'=>'path1')); ?>
4. Yii 生成下拉菜單
很多時候我們在 form 里需要一個下拉菜單,這時候 Chtml 的 listdata 就很好用的。假如我們數(shù)據(jù)庫里的字段只有很少的可能,比如 0 和 1,可以按下面寫:
新聞熱點
疑難解答