php – CssRewrite过滤器不会将相对URL转换为绝对值

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – CssRewrite过滤器不会将相对URL转换为绝对值脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将所有使用过的css文件合并为一个.但包含相对路径的资会导致问题.我尝试了资产的CssRewrITeFilter,但它不起作用.

这是我的代码

$files = [
        '/node_modules/select2/dist/css/select2.min.css','/node_modules/jquery-datetimepicker/jquery.datetimepicker.css','/node_modules/icheck/skins/square/blue.css','/node_modules/Plupload/js/jquery.plupload.queue/css/jquery.plupload.queue.css','/node_modules/pace/themes/white/pace-theme-flash.css','/node_modules/lightgallery/dist/css/lightgallery.min.css','/node_modules/x-editable/dist/bootstraP3-editable/css/bootstrap-editable.css','/node_modules/sweetalert2/dist/sweetalert2.css','/node_modules/aniMATE.css/animate.min.css','/node_modules/fullcalendar/dist/fullcalendar.min.css','/node_modules/flag-icon-css/css/flag-icon.min.css','/theme/assets/skin/default_skin/css/theme.css',];

    $am = new \assetic\AssetManager();

    $items = [];

    foreach ($files as $file) {
        $filename = APP_ROOT_DIR . '/public/ui' . $file;
        $items[] = new \Assetic\Asset\FileAsset($filename,[new \Assetic\Filter\CssRewriteFilter()]);
    }

    $collection = new \Assetic\Asset\AssetCollection(
        $items
    );
    $collection->setTargetPath('vendor.css');

    $am->set('collection',$collection);

    $writer = new \Assetic\AssetWriter(APP_ROOT_DIR . '/public/ui/shared/css/');
    $writer->writeManagerAssets($am);

我期待的是:

在/node_modules/test/css/test.css中的../img/test.png代码中包含img时,Assetic应该将其重写为/node_modules/test/img/test.png

解决方法

尝试构建FileAsset类,如:

new \Assetic\Asset\FileAsset(
    $filename,[new \Assetic\Filter\CssRewriteFilter()],'/node_modules/test/'
);

在src / Assetic / Asset / FileAsset.PHP:37中,我们看到您可以包含$sourcePath作为第三个参数.

https://github.com/kriswallsmith/assetic/blob/master/src/Assetic/Asset/FileAsset.php#L37

您可能希望将$files数组重新设置为类似的内容

$files = [
    ['/node_modules/select2/dist/css/','select2.min.css']
    ...
];

这样你就可以两次调用$sourcePath了

new \Assetic\Asset\FileAsset(
    APP_ROOT_DIR . '/public/ui' . $file[0].$file[1],'/public/ui'.$filename[0]
);

脚本宝典总结

以上是脚本宝典为你收集整理的php – CssRewrite过滤器不会将相对URL转换为绝对值全部内容,希望文章能够帮你解决php – CssRewrite过滤器不会将相对URL转换为绝对值所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。