Yii-外部JS文件包括、registerScriptFile和publish
我正在为我的web应用程序使用YII框架。我有一个关于注册外部Java脚本文件的问题 谁能帮帮我吗Yii-外部JS文件包括、registerScriptFile和publish,yii,Yii,我正在为我的web应用程序使用YII框架。我有一个关于注册外部Java脚本文件的问题 谁能帮帮我吗 复制Java脚本文件的最佳位置(哪个文件夹) 我知道有两种方法可以注册外部Java脚本 文件 第一种方法 $baseUrl = Yii::app()->baseUrl; $cs = Yii::app()->getClientScript(); $cs->registerScriptFile($baseUrl.'/js/yourscript.js'); 第二次接近 $
$baseUrl = Yii::app()->baseUrl;
$cs = Yii::app()->getClientScript();
$cs->registerScriptFile($baseUrl.'/js/yourscript.js');
第二次接近
$cs=Yii::app()->getClientScript();
$cs->registerScriptFile(Yii::app()->getAssetManager()->publish('path/to/js'));
$cs->registerScript('id', 'your js here');
id
还是java脚本文件
。($cs->registerScript('id','yourJShere');
)
在我的例子中,我是从一个视图访问它的,因此在第二种方法中,因为它被发布到资产文件夹,如果10个客户端调用该文件,它会发布10次(因为我是从视图文件访问它)
我有点困惑
谢谢你的回答
问候
Kiran在常见情况下,最好的方法是将JS文件放入web_root/JS中,并使用
$cs->registerScriptFile
。AssetManager便于在小部件中使用。您可以将JS文件放入受保护的文件夹,并在需要时将其发布到资产文件夹。如果您要调用publish()
方法10次,它应该只发布一个文件。如果将$forceCopy
参数设置为true
(默认值为false
),则可以复制10次,但复制方向相同。Yii资产文件夹通常由小部件和Yii的内部组件(如Gridview)使用。您不需要将外部JS或CSS文件存储或发布到assets文件夹
其次,如果文件已经存在于资产文件夹getAssetManager()->publish('path/to/js')
中,则不会再次复制它
最后,您不需要实例化CClientScript类,您可以将其直接调用为
Yii::app()->clientScript->registerScriptFile(
Yii::app()->baseUrl.'/js/file.js'
);
或者如果您使用的是主题
Yii::app()->clientScript->registerScriptFile(
Yii::app()->theme->baseUrl.'/js/file.js'
);
这个问题已获答覆—
请参阅更多信息感谢Oleg的快速响应他没有实例化CClientScript类。可能是