Yii 框架 : Register CSS After Publishing Asset Folder

标签 yii

Yii 有点新。我正在尝试在 View 中发布 Assets 文件夹下的所有文件。

结构是这样的:

/views/test

/views/test/assets

/views/test/assets/css

/views/test/assets/images

现在,我所做的是使用 Yii:app()->getAssetManager()->publish( dirname( __FILE__ ) . '/assets/' );/views/test 目录。

它可以正常发布它们,但现在我必须为 /views/test/assets/css 中包含的所有 css 调用 cs()->registerCssFile。我该怎么做?

我知道 publish() 方法返回路径。这是否意味着我必须从文件夹中执行 foreach $file,然后使用返回的 Assets 目录调用 cs()->registerCssFile

可能有更简单的方法,因此非常感谢您的帮助! :)

最佳答案

我真的找到了答案!同时 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' );

接下来要做的是发布ALL basePath 的内容并注册包中指定的CSS和JS文件。例如,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 文件应该不是什么大问题。

关于Yii 框架 : Register CSS After Publishing Asset Folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16981757/

相关文章:

php - 打开 Yii 应用程序导致下载 index.php

php - Yii2 并将数据作为 UTC 存储在数据库中

php - "session_regenerate_id(): Cannot regenerate session id - headers already sent"如何解决

php - 在 Yii 中使用统计查询

php - 将 Yii ActiveRecord 模型插入 mysql 表时出错

session - Yii session 在多服务器中不起作用

php - 找不到 Yii 类 CActiveDataProvider

javascript - yii onclick 更新 renderPartial

php - Yii - 使用事件记录获取列的最小值、最大值

mysql - 两个表之间的关系 : make relationship between two tables