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

Hip*_*jim 7 jquery yii

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

我知道我可以在页面上指定包含脚本的位置,但是它似乎有点受到影响并且错过了将它包含在"结束" - 如果我有其他脚本需要在该插件之后加载怎么办?我如何确保以正确的顺序加载 - 任何人都有任何想法?

Pet*_*rus 11

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

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

'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',
          )
      ),
   )
)
Run Code Online (Sandbox Code Playgroud)

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