我正在为Yii应用程序制作一个小部件。主布局视图注册所有常见的脚本文件,如jQuery和jQueryUI。在我的小部件中,我想使用一个依赖于已经加载的jQueryUI的jQueryUI插件。
我知道我可以在页面上指定包含脚本的位置,但是它似乎有点受到影响而只是将它包含在“结束” - 如果我有其他脚本需要在该插件之后加载怎么办?如何确保按正确的顺序加载 - 任何人都有任何想法?
答案 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
需要(取决于)package1
而package3
需要package2
。假设在您的情况下,小部件使用package2
,而另一个脚本使用package3
。即使您不渲染窗口小部件,如果您使用Yii::app()->clientScript->registerPackage('package3');
,它也会自动安装package2
,然后在package1
之前安装package2
(或者不会安装如果以前某些脚本已经要求package1
。)。