1

我最近为 Yii 开启了 UrlManager 的路径版本。我正在运行 TinyMCE,这已经可以预见地中断了。我可以看到问题,但不知道如何解决。它正在使用控制器调用脚本-

http://localhost:8888/content_management/content/assets/js/jquery.js

控制器称为内容,脚本包含在根目录的资产文件夹中。

脚本的正确路径是 -

http://localhost:8888/content_management/assets/js/jquery.js

有谁知道如何阻止 Yii 通过控制器 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);

这些有什么明显的问题吗?

4

2 回答 2

3

我不确定这是 UrlManager 问题吗?可能是不使用基本 URL 函数的情况:

Yii::app()->request->baseUrl

这指向根目录,因此您可以像这样使用它:

<script src="<?php echo Yii::app()->request->baseUrl; ?>/js/my_javascript_file.js"></script>

否则我认为这可能是一个 jQuery 问题。你自己加载 jQuery 吗?我建议强制 Yii 在主布局(或您用于此视图的任何布局)中加载 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); ?>

根据您希望将其加载到就绪块还是头部,使用POS_READYPOS_HEAD

希望这可以解决您的问题

于 2012-11-22T23:03:04.677 回答
2

我找到了哪里出错了,或者至少找到了解决方法。

我换了——

Yii::app()->clientScript->registerCoreScript('jquery');

和-

    Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl . '/assets/js/jquery.js', CClientScript::POS_HEAD);
于 2012-11-22T23:43:25.490 回答