我真的找到了答案!虽然registerCssFile()
确实有效,但还有一个更优雅的解决方案,Yii 包!
考虑以下文件结构:
protected
\---views
|---home
| \---assets
| |---css
| | |---styles.css
| | |---custom.css
| | \---print.css
| |---js
| | |---functions.js
| | |---jquery.js
| | \---ajax.js
| |---images
| |---img1.png
| |---imgn.png
| \---imgX.png
\---index.php
你可以在 中声明一个这样的包index.php
,注意使用 Yii 框架的点表示法basePath
:
$package = array(
'basePath' => 'application.views.home.assets',
'css' => array( 'styles.css' ),
'js' => array( 'jquery.js', 'functions.js' )
);
然后,使用 Yii 的clientScript
添加和注册包。
Yii::app()->clientScript()
->addPackage( 'package-name', $package )
->registerPackage( 'package-name' );
这将做的是发布并注册包中指定的 CSS 和 JS 文件的所有内容。basePath
例如,styles.css
、custom.css
和print.css
都将被发布,但只会styles.css
附加到<head>
.
考虑这一点,而不是使用:
$assetFolder = Yii::app()->assetManager->publish( dirname( __FILE__ ) . '/assets' );
Yii::app()->clientScript->registerCssFile( $assetFolder . 'styles.css' );
Yii::app()->clientScript->registerScriptFile( $assetFolder . 'jquery.js' );
Yii::app()->clientScript->registerScriptFile( $assetFolder . 'function.js' );
Michael 是正确的,无论如何都不会太多,因此在包声明中指定 css 和 js 文件应该不是什么大问题。