注册/呈现包时出现Yii clientScript / assetManager问题

时间:2013-04-19 09:21:12

标签: php yii assets

我遇到了clientScript和assetManager的问题。我正在发布一个文件目录,然后添加一个我稍后注册的包。包添加得很好,但是当它被渲染时,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->软件包的输出。

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,错误的目录。有没有人遇到过这个和/或知道什么是错的?

1 个答案:

答案 0 :(得分: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包装上

Here's a basic article

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