我想全局注册用户脚本,以便在整个站点上可用.现在我插入控制器中的每个动作:
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/script.js');
Run Code Online (Sandbox Code Playgroud)
但我真的明白,这不是好方法......
如果您期待在项目中使用主题,我会在布局文件中放置一些CSS和脚本(views/layouts/my-layout-file.php).因为如果您更改主题,您将使用另一个css,有时可能是另一个脚本,因此您不希望将它们混合在一起.
但是一些主要的css和scipts,没有改变主题,我会放入主控制器(protected/components/Controller.php)和所有其他控制器(/ protected/controllers /)将扩展此类控制器
class PageController extends Controller {
Run Code Online (Sandbox Code Playgroud)
因此,如果所有控制器都在父类上使用,则可以只编辑父类并添加类似的内容
public function beforeRender( $view ) {
...
Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . '/js/script.js');
...
return true;
}
Run Code Online (Sandbox Code Playgroud)
现在您的所有操作都将使用相同的脚本.
编辑:@realtebo(在评论)指出,使用" beforeRender "而不是"beforeAction".
了解更多:了解视图渲染流程