0

我遇到了 clientScript 和 assetsManager 的问题。我正在发布一个文件目录,然后添加一个我稍后注册的包。包被添加得很好,但是当它被渲染时,url 是错误的。

发布文件并添加包:

// Publish the directory
$scriptFiles = Yii::app()->assetManager->publish(Yii::getPathOfAlias('library').'/assets/jquery.plugins/jquery.dropdown/', true, 0);

// Add the package
Yii::app()->clientScript->packages = array(
        'jquery.dropdown'=>array(
                'baseURL'=>$scriptFiles,
                'js'=>array('jquery.dropdown.js', 'jgestures.min.js'),
                'depends'=>array('jquery'),
        ),
);

包被添加并发布到应用程序的资产目录,这是 Yii::app()->clientScript->packages 的输出。

Array
(
    [jquery.dropdown] => Array
        (
            [baseURL] => /assets/a4017faa
            [js] => Array
                (
                    [0] => jquery.dropdown.js
                    [1] => jgestures.min.js
                )
            [depends] => Array
                (
                    [0] => jquery
                )
        )
)

虽然,当我注册包宽度 Yii::app()->clientScript->registerPackage('jquery.dropdown') 时,这就是渲染的内容:

<script type="text/javascript" src="/assets/961fc04/jquery.dropdown.js"></script>
<script type="text/javascript" src="/assets/961fc04/jgestures.min.js"></script>

注意 src 属性中的 URL,错误的目录。有没有人遇到过这种情况和/或知道出了什么问题?

4

1 回答 1

1

你的问题在于以下

$scriptFiles = Yii::app()->assetManager->publish(Yii::getPathOfAlias('library').'/assets/jquery.plugins/jquery.dropdown/', true, 0);

包管理器实际上为您发布了包,所以您在这里所做的是两次发布同一个文件。$scriptFiles改为设置Yii::getPathOfAlias('library').'/assets/jquery.plugins/jquery.dropdown/它应该可以正常工作。

这里有一篇关于 Yii 包的基本文章,如果你想多读一些。

编辑:我现在看到你已经尝试设置baseUrl以避免自动发布,但是你已经拼写了它baseURL,这使得 Yii 自动发布它而不是使用你想要给它的路径。

于 2013-04-19T09:40:25.163 回答