歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Yii中引入js和css文件

Yii中引入js和css文件

日期:2017/3/1 9:34:59   编辑:Linux編程

在視圖層(../views/..)添加CSS文件或JavaScript文件

Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . "/js/TableView.js");
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . "/js/datechooser.js");
Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl . "/css/datechooser.css");

批注1:在視圖層引用與在控制層引用的方式一樣。但在視圖層中引用加載的要晚一些。
批注2:引用路徑是使用baseUrl,而不是basePath。
批注3:關於參數CClientScript::POS_END,作用是延時加載,提高頁面渲染效率。例如:
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . "/js/jqueryui/jquery-ui.min.js", CClientScript::POS_END);
全部參數一覽:
CClientScript::POS_HEAD : the script is inserted in the head section right before the title element.
CClientScript::POS_BEGIN : the script is inserted at the beginning of the body section.
CClientScript::POS_END : the script is inserted at the end of the body section.
CClientScript::POS_LOAD : the script is inserted in the window.onload() function.
CClientScript::POS_READY : the script is inserted in the jQuery's ready function.
注:這些參數僅適用於加載js文件,不適用於加載css文件。

三、引入jquery核心部件

Yii::app()->clientScript->registerCoreScript('jquery');

批注:不論在頁面中的何種位置引用,最終yii會將jquery.js文件放入yii的assets文件夾下。即/projectName/assets/82qg58/jquery-1.6.1.min.js。

二、在控制層(../controllers/xxController.php)添加CSS文件或JavaScript文件

public function init()
{
//parent::init();
Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.'/css/my.css');
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.'/css/my.js');
}

新增:
在控制層,還可以在ActionIndex中引入,而且還可以引入別的module文件夾中的js/css文件。甚至是任意文件夾下的js/css文件

public function actionIndex(){
$modify,$reg = some_value;
$js = $this->renderFile($this->getInstallViewPath(). '/asset/install.js',array('reg_mp'=>$reg), true);
$js = $this->renderFile($this->getViewPath() . '/assets/install_params.js', array('modify' => $modify), true);

$cs = Yii::app()->clientScript;
$cs->registerScript('asset/install', $js, CClientScript::POS_END);
$cs->registerCssFile(Yii::app()->baseUrl . '/css/launch_feed.css');
$cs->registerScript('assets/install_params',$js,CClientScript::POS_END);
$cs->registerScriptFile(Yii::app()->baseUrl . '/resources/jquery.form.js');
$cs->registerCssFile(Yii::app()->baseUrl . '/css/install_params.css');

$this->render('xxx');
}

public function getInstallViewPath() {
return $this->getModule()->getBasePath().'/../operations/views';
}

一、在../layouts/main.php中引入
1,直接引入

<!-- css -->
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/css/print.css" media="print" />
<!-- 圖片 -->
<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->request->baseUrl; ?>/js/autocomplete/indicator.gif" />
<!-- js -->
<script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/jquery.js"></script>

2,yii方式引入

<?php
<!-- (一)簡單用法 -->
<!-- js -->
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . "/js/jqueryui/jquery-ui.min.js", CClientScript::POS_END);


<!-- (二)復雜用法 -->
if($this->user->id) {
Yii::app()->clientScript->registerScriptFile(Yii::app()->createUrl('/account/info', array('format' => 'js')), CClientScript::POS_END);
}

if($this->user->id) {
Yii::app()->clientScript->registerScriptFile(Yii::app()->createUrl('site/baseJs'));
}
?>

批注:在yii運行後,第一種在head中,第二種在body最後面,顯然後者效率更高。但必須加載的js和css有必要寫在head中。

3,區別

批注:至於為什麼會有/assets/b729ab/js/jquery.js這樣的文件生成,還在繼續探索中。

Yii 用戶登陸機制 http://www.linuxidc.com/Linux/2015-01/111602.htm

Yii 的詳細介紹:請點這裡
Yii 的下載地址:請點這裡

Copyright © Linux教程網 All Rights Reserved