symfony — Webpack Encore — Получить версионные файлы в Stack Overflow

Я недавно установил Symfony 4 с Webpack Encore.
Я использую некоторые статические ресурсы, чтобы сделать PDF с TCPDF.
Чтобы сделать это, я использовал для получения изображений их путь, но в версии Webpack Encore имена файлов отличаются, поэтому я не могу получить изображения таким образом.
Есть ли решение для сохранения версий и доступа к этим изображениям в PHP?

PHP:

$logourl = trim("../public/build/images/tst_noir.png");
$pdf->Image($logourl, 135, 10.8, 42, 0);

Webpack app.js:

require('../images/tst_noir.png');

Webpack-config.js:

const Encore = require('@symfony/webpack-encore');

Encore
.setOutputPath('public/build/')
.setPublicPath('http://localhost/xxx/public/build')
.setManifestKeyPrefix('build/')
.cleanupOutputBeforeBuild()
.enableSourceMaps(!Encore.isProduction())
.autoProvidejQuery()
.addEntry('app', './assets/js/app.js');

module.exports = Encore.getWebpackConfig();

1

Решение

Если у вас есть конфигурация Symfony для настройки ресурсов для использования на веб-сайте, вы можете использовать assets.packages пакет для извлечения окончательных готовых для отображения URL-адресов для файла:

use Symfony\Component\Asset\Package;
use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;

$package = new Package(new EmptyVersionStrategy());

// Absolute path
echo $package->getUrl('/image.png');
// result: /image.png

// Relative path
echo $package->getUrl('image.png');
// result: image.png

Версии и префиксы URL также должны обрабатываться, если Symfony & Webpack Конфигурация (или настройка компонента напрямую) была введена в действие.

// webpack.config.js
if (Encore.isProduction()) {
Encore.setPublicPath('https://my-cool-app.com.global.prod.fastly.net');
Encore.setManifestKeyPrefix('build/');
}

До Symfony 3.0, templating.helper.assets обеспечили почти такую ​​же функциональность, но теперь у вас больше шансов использовать framework.assets.json_manifest_path: конфигурации.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]