在yii中更改已注册脚本文件的顺序

我正在为Yii应用程序制作一个小部件。 主布局视图注册所有常见的脚本文件,如jQuery和jQueryUI。 在我的小部件中,我想使用依赖于已经加载的jQueryUI的jQueryUI插件。

我知道我可以在页面上指定包含脚本的位置,但是只是将它包含在“结束”中似乎有点受欢迎 – 如果我有其他脚本需要在该插件之后加载怎么办? 我如何确保以正确的顺序加载 – 任何人都有任何想法?

您可以在Yii 脚本包中使用依赖项function。 我之前遇到过类似的问题 。

例如,您有如下所示的脚本包配置,

'clientScript' => array( 'packages' => array( 'package1' => array( 'basePath' => 'path.to.package1', 'js' => array( 'package1.js', ), 'css' => array( 'package1.css' ), ), 'package2' => array( 'basePath' => 'path.to.package2', 'js' => array( 'package2.js', ), 'css' => array( 'package2.css' ), 'depends' => array( 'package1', ) ), 'package3' => array( 'basePath' => 'path.to.package3', 'js' => array( 'package3.js', ), 'css' => array( 'package3.css' ), 'depends' => array( 'package2', ) ), ) ) 

在上面的示例中, package2需要(depends) package1package3需要package2 。 让我们假设一个小部件使用package2 ,另一个脚本使用package3 。 即使你不渲染小部件,如果你使用Yii::app()->clientScript->registerPackage('package3'); ,它会自动安装package2 ,然后在package2之前安装package1 (如果以前某些脚本已经要求package1则不会安装。)。