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

时间:2012-06-20 09:14:00

标签: jquery yii

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

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

1 个答案:

答案 0 :(得分:11)

您可以在Yii script packages中使用依赖项功能。我有similar problem before

例如,您有脚本包配置如下,

'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需要(取决于)package1package3需要package2。假设在您的情况下,小部件使用package2,而另一个脚本使用package3。即使您不渲染窗口小部件,如果您使用Yii::app()->clientScript->registerPackage('package3');,它也会自动安装package2,然后在package1之前安装package2(或者不会安装如果以前某些脚本已经要求package1。)。