Я нашел что-то интересное в трекере Symfony, для версии 1.3 / 1.4 был патч для автоматического добавления метки времени для всех файлов в веб-каталоге: http://trac.symfony -project.org / ticket / 6135
С тех пор он был отменен, понятия не имею почему ... (навязчиво?).
Переопределить помощник по умолчанию для активов
В любом случае, я думаю, что у вас естьсоздать свой собственный AssetHelper (скопировал все содержимое из текущего) и добавить и настроить патч # 6135 в lib/helper/CustomAssetHelper.php
.
Но вы не можете выгрузить AssetHelper, потому что он автоматически загружается в ядро: http://trac.symfony -project.org / browser / branch / 1.4 / lib / view / sfPHPView.class.php # L33 Таким образом, возникнет конфликт, поскольку у вас будет дублирующаяся функция (в AssetHelper и CustomAssetHelper).
Добавить пользовательский шаблонизатор
Идея состоит в том, чтобы создать пользовательский sfPHPView
для переопределения loadCoreAndStandardHelpers
для вызова собственного помощника ресурса (вставьте его в lib/view/sfCustomPHPView.class.php
):
class sfCustomPHPView extends sfPHPView
{
/**
* Loads core and standard helpers to be use in the template.
*/
protected function loadCoreAndStandardHelpers()
{
static $coreHelpersLoaded = 0;
if ($coreHelpersLoaded)
{
return;
}
$coreHelpersLoaded = 1;
$helpers = array_unique(array_merge(array('Helper', 'Url', 'CustomAsset', 'Tag', 'Escaping'), sfConfig::get('sf_standard_helpers')));
// remove default Form helper if compat_10 is false
if (!sfConfig::get('sf_compat_10') && false !== $i = array_search('Form', $helpers))
{
unset($helpers[$i]);
}
$this->context->getConfiguration()->loadHelpers($helpers);
}
}
Чтобы изменить sf по умолчаниюPHPView, вам нужно добавить module.yml
в config/
или apps/frontend/config/
со следующим содержимым ( вдохновлено sfTwigPlugin ):
all:
view_class: sfCustom
Переопределить все image_tag()
Как сказал Измир Рамирес , image_tag()
вызывает image_path()
, что вызывает _compute_public_path($source, 'images', 'png', $absolute);
.
В _compute_public_path
функции, перед последним условием, вы настраиваете query_string длядобавьте свой собственный номер ревизии (который будет определен где-то еще - например, sfConfig):
$file = sfConfig::get('sf_web_dir').$source;
if ('images' == $dir && sfConfig::get('my_revision_number'))
{
$query_string .= sfConfig::get('my_revision_number');
}
Это может быть немного сложно, но, используя этот способ, вы можете переопределить функцию image_tag и добавить желаемый номер версиибез переопределения всего, что вы вызываете image_tag ().
Об изображении внутри CSS, это немного сложнее, так как вам придется анализировать CSS или писать CSS в PHP.Понятия не имею о лучшем способе сделать.