Cof*_*fey 3 php performance yii
我一直试图弄清楚如何做这一段时间而且难倒了.出于某种疯狂的原因,YII违背了最佳实践,并尝试在HEAD标签和整个机构中插入所有这些JS.我希望所有的JS都出现在关闭body标签之前.
我正在使用自己的jQuery(v.1.9.0),Bootstrap等,并将scriptMap设置为false.但是,yiiactiveform仍然被插入HEAD标签和JS中,我使用enableClientValidation在我的视图中使用,而且在我的视图底部写的JS仍然出现在BODY中.
怎么能改变?
boo*_*dev 14
该jquery.yiiactiveform.js被注册为coreScript,所以要改变其位置,你必须超越它的位置,它通过默认的是<HEAD>.要覆盖位置,您可以使用coreScriptPositionCClientScript的属性,有点像(在您的特定视图中):
Yii::app()->clientScript->coreScriptPosition=CClientScript::POS_END;
Run Code Online (Sandbox Code Playgroud)
我们刚刚将它改为body标签末尾的位置.
但是,由于您希望为所有视图(即整个应用程序)执行此操作,因此您可以在应用程序配置期间覆盖该位置.为此,您必须更改应用程序加载的配置数组,通常此文件在文件中指定:protected/config/main.php.您必须更改clientScript应用程序的组件配置,如下所示:
return array(
// other properties
'components'=>array(
// other components' configurations
'clientScript'=>array(
'coreScriptPosition'=>CClientScript::POS_END
)
)
);
Run Code Online (Sandbox Code Playgroud)
同样,您可以对注册为脚本文件的脚本进行更改,即registerScriptFile()使用属性defaultScriptFilePosition进行更改.
然后,对于registerScript()使用该属性defaultScriptPosition注册的脚本.
当您想要为小部件注册的脚本(如CActiveForm)指定位置时,这些属性特别方便,当然,当您要为自己的脚本指定位置时(如果使用其中一个registerScript*函数注册).
如果您自己指定了文件/脚本(使用其中一个registerScript*函数),那么您也可以在调用函数时设置位置.
确保在更改窗口小部件的位置时进行彻底测试,例如CActiveForm有一些在jQuery.ready函数中注册的小脚本,或者jQuery(function($) { ...如果指定defaultScriptPosition到POS_END,这些脚本将被移出ready()函数.
您可以按视图再次更改这些属性:
Yii::app()->clientScript->defaultScriptPosition=CClientScript::POS_END;
Yii::app()->clientScript->defaultScriptFilePosition=CClientScript::POS_END;
Run Code Online (Sandbox Code Playgroud)
或系统范围:
return array(
// other properties
'components'=>array(
// other components' configurations
'clientScript'=>array(
'coreScriptPosition'=>CClientScript::POS_END,
'defaultScriptPosition'=>CClientScript::POS_END,
'defaultScriptFilePosition'=>CClientScript::POS_END
)
)
);
Run Code Online (Sandbox Code Playgroud)
如果您<script></script>的视图中包含带有标记的脚本,那么我担心您无法轻易控制其位置,您必须将这些脚本(如果可能)移动到布局文件中(不会一直有效) - 许多不同的情况).最好的选择是切换到registerScriptFile或registerScript运行,而不是使用<script>.
| 归档时间: |
|
| 查看次数: |
3739 次 |
| 最近记录: |