2015-10-03 34 views
1

我已成功设置我的Symfony 2.7.x安装以使用标准资产版本策略(EmptyVersionStrategy和StaticVersionStrategy),但希望实施Custom Version Strategy,如基于日期的策略或类似方法。Symfony 2.7+资产定制版本策略配置

目前,我有

config.yml

framework: 
    assets: 
     version: 'v1' # or ~ for EmptyVersionStrategy 

由于version价值似乎执行该战略,也值,我该如何配置自定义策略?

我已阅读Asset Blog articleless-than-complete docs

+0

我找到了[这个symfony ticket](https://github.com/symfony/sym fony/issues/15554),它基本上概述了同样的问题,但目前还没有提供解决方案。 – craigh

回答

1

您可以轻松更换EmptyVersionStrategy,只是覆盖服务,你可以看到如下:

应用程序/配置/ services.yml

services: 
    assets.empty_version_strategy: 
     class:  FooBundle\Twig\Extension\AssetVersionStrategy 
     arguments: ["%kernel.root_dir%"] 

的src/FooBundle \枝杈\ AssetVersionStrategy。 php

namespace FooBundle\Twig\Extension; 

use Symfony\Component\Asset\VersionStrategy\VersionStrategyInterface; 


/** 
* AssetVersionStrategy (Twig) 
* 
* @author Your Name <[email protected]> 
* @license MIT License (http://www.opensource.org/licenses/mit-license.php) 
*/ 
class AssetVersionStrategy implements VersionStrategyInterface 
{ 
    /** 
    * @var string 
    */ 
    private $root; 

    /** 
    * @param string $root 
    */ 
    public function __construct($root) 
    { 
     $this->root = $root; 
    } 

    /** 
    * Should return the version by the given path (starts from public root) 
    * 
    * @param string $path 
    * @return string 
    */ 
    public function getVersion($path) 
    { 
     return $path; 
    } 

    /** 
    * Determines how to apply version into the given path 
    * 
    * @param string $path 
    * @return string 
    */ 
    public function applyVersion($path) 
    { 
     return sprintf('%s?v=%s', $path, $this->getVersion($path)); 
    } 
}