我在 symfony4 上使用 fos_js_routing 包。我需要在我的树枝视图中获取路由对象。我在 assets/js/app.js 中定义了 Routing,这是一个使用 Webpack Encore 转译的 js 文件。因为我的 Routing 对象已正确构建在此文件中,所以我想在 Twig 视图中访问它。
// assets/js/app.js
const routes = require('../../web/js/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';
Routing.setRoutingData(routes);
我的 webpack 配置中有这一行:
Encore
.setOutputPath('public/build/')
.setPublicPath('/build')
.cleanupOutputBeforeBuild()
.enableSourceMaps(!Encore.isProduction())
.addEntry('js/app', './assets/js/app.js')
我得到了我的 twig 视图,其中转译的 app.js 可以通过 webpack Encore 访问并成功转译。但是变量路由不可访问(我得到客户端错误:路由未定义),
// in my twig view, inside a script block
var redirectionUrl = Routing.generate('my_route', {arg: arg}); // Routing is not defined
可能是因为在编译过程中被定义为let,并且我希望它作为一个var,在我包含已编译的 app.js ( public/build/js/app.js )的每个 twig 视图中都可以访问。我的 Twig 视图包括这一行中的转译文件,并成功导入到我的 twig 源中
<script src="{{ asset('build/js/app.js') }}"></script>
如何使用 Webpack encore 在我的树枝视图中获取路由?