Php 有没有办法为包括css文件在内的所有文件添加版本号

Php 有没有办法为包括css文件在内的所有文件添加版本号,php,css,yii,Php,Css,Yii,我有很多地方包括类似这样的CSS文件 $cs->registerScriptFile($cs->getCoreScriptUrl() . '/js/jquery/jquery.cookie.js'); 我有一个恒定的版本构建,它在每次提交后都会递增。有没有办法补充 ?v=VERSION-BUILD 参数对于所有脚本注册,不要硬编码它,或者重写yii lib?出于我个人的目的,我扩展了CClientScript类,使其为每个脚本和css添加唯一的参数。它可以很容易地改进以满足您的需

我有很多地方包括类似这样的CSS文件

$cs->registerScriptFile($cs->getCoreScriptUrl() . '/js/jquery/jquery.cookie.js');
我有一个恒定的版本构建,它在每次提交后都会递增。有没有办法补充

?v=VERSION-BUILD

参数对于所有脚本注册,不要硬编码它,或者重写yii lib?

出于我个人的目的,我扩展了CClientScript类,使其为每个脚本和css添加唯一的参数。它可以很容易地改进以满足您的需要

我已经为这个组件准备了一个未经测试的简单版本。其思想是覆盖CClientScript的render()方法,该方法在任何脚本文件回显之前调用:

class ClientScript extends CCLientScript
{

public $version=1;

public function render(&$output)
{
    if(!$this->hasScripts)
        return;
    if ($this->version!==false)
    {
        foreach ($this->scriptFiles as $position=>&$scripts)
        {
            foreach ($scripts as &$script)
            {
                $script.="?".$this->version;
            }
        }

        foreach ($this->cssFiles as $position=>&$styles)
        {
            foreach ($styles as &$style)
            {
                $style.="?".$this->version;
            }
        }
    }
    parent::render($output);
}
}
比如说,把这个类放在“components”文件夹中。现在,您可以通过配置应用程序的参数(通常在config/main.php中)来使用它,而不是CClientScript:

'clientScript' => array(
    'class' => 'ClientScript',
    'version'=>2,
    //the rest parameters are same as usual. you can set up packages here and so on.
)

代码可以改进,以跳过jquery和其他第三方库等文件的版本控制-这取决于您。

不太熟悉该框架,但在快速搜索时,我发现Yii有一个似乎可以处理此问题的。。。如果使用Gii,可能还有其他功能?如果可以这样添加子域,我想删除CDN中的所有静态文件,所以我需要添加CDN。在绝对url中,但是$this->scriptFiles只包含相对url'sok!我已经完成了:)公共函数setCoreScriptUrl($value){$baseUrl=str_replace(“:/”,“://cdn.”,\Yii::app()->baseUrl);$value=$baseUrl.$value;parent::setCoreScriptUrl($value);}