我最近为 Yii 打开了 UrlManager 的路径版本。我正在运行 TinyMCE,这已经可以预见地坏掉了。我可以看到问题,但不知道如何解决。它正在使用 Controller 调用脚本-
http://localhost:8888/content_management/content/assets/js/jquery.js
Controller 称为内容,脚本包含在根目录的 Assets 文件夹中。
脚本的正确路径是-
http://localhost:8888/content_management/assets/js/jquery.js
有谁知道如何阻止 Yii 通过 Controller ID 调用脚本?抱歉,如果这是显而易见的事情,我对 Yii 还是很陌生。
提前致谢
尼克
我可能应该添加这个。这是我调用脚本的方式-
Yii::app()->clientScript->registerCoreScript('jquery');
Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl . '/assets/js/tinymce/jscripts/tiny_mce/tiny_mce.js', CClientScript::POS_HEAD);
这些有什么明显的问题吗?
最佳答案
我不确定这是 UrlManager 的问题吗? 可能是不使用基本 URL 函数的情况:
Yii::app()->request->baseUrl
这指向根目录,因此您可以像这样使用它:
<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/my_javascript_file.js"></script>
否则我认为这可能是一个 jQuery 问题。你自己加载 jQuery 吗?我建议强制 Yii 在主布局(或您为此 View 使用的任何布局)中加载 jQuery,如下所示:
<?php Yii::app()->clientScript()->registerCoreScript('jquery'); ?>
我发现这解决了 Yii 的大多数 jQuery 问题。删除您可能已手动放入 jQuery 的任何引用。另外,加载js文件时,推荐使用registerScriptFile:
<?php Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl.'/js/my_javascript_file.js', CClientScript::POS_HEAD); ?>
<?php Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl.'/js/my_javascript_file.js', CClientScript::POS_READY); ?>
根据您希望将其加载到就绪 block 还是头部,使用POS_READY 或POS_HEAD
希望这能解决您的问题
关于javascript - Yii Register 核心脚本正在调用 Controller 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520704/