- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在我的 Symfony 4 项目中将 FosJsRouting 与 Webpack-encore 结合使用。
我做到了:
1.
composer require friendsofsymfony/jsrouting-bundle
2.
php bin/console assets:install --symlink public
3.
php bin/console fos:js-routing:dump --format=json --target=public/js/fos_js_routes.json
在我的 app.js 中:
// FosJsRouting
const routes = require('../../public/js/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';
Routing.setRoutingData(routes);
现在,如果在 app.js 中执行 console.log(Routing);
,我会在控制台中获取对象。
另一方面,不可能在我的模板中使用它。
我有以下错误:
Uncaught ReferenceError: Routing is not defined
我不明白,因为我的其他包工作得很好,但路由不是
最佳答案
您可能已经找到了解决方案,但这里有一些其他信息:
因此,在您的 app.js
中,您导入 Routing
的地方,它只能在这个特定文件中使用,您必须将它导入到任何您想要的地方。但是,你需要每次都设置路由:
app.js
const routes = require('../../public/js/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';
Routing.setRoutingData(routes);
console.log(Routing.generate("exposed_route_name")); // will prints in console /path/to/exposed_route
其他.js
const routes = require('../../public/js/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';
Routing.setRoutingData(routes);
console.log(Routing.generate("another_exposed_route_name")); // will prints in console /path/to/another_exposed_route
这不是一个合适的解决方案,因为它太冗余了,没有人愿意每次都重复相同的代码。
路由
变量另一个解决方案是将 Routing
设置为 global 并在后面包含的文件中访问它:
app.js
const routes = require('../../public/js/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';
Routing.setRoutingData(routes);
// Setting Routing as global there
global.Routing = Routing;
console.log(Routing.generate("exposed_route_name")); // will prints in console /path/to/exposed_route
其他.js
console.log(Routing.generate("another_exposed_route_name")); // will prints in console /path/to/another_exposed_route
template.html.twig
{{ encore_entry_script_tags('app') }}
{{ encore_entry_script_tags('other') }}
<script>
console.log(Routing.generate("a_third_exposed_route_name")); // will prints in console /path/to/third_exposed_route
</script>
问题是,当包含全局化文件时,路由将随处可用。它也将在您的 Web 控制台中可用,我认为这不是一件好事,因为每个人都将能够看到您所有的 fos_js_routing 配置。
Routing
还有一个解决方案,您可以为其创建一个“假”路由模块。在此文件中,您将设置路由对象配置并将其导出:
routing.js
const routes = require("../../public/js/fos_js_routes");
const Routing = require("../../public/bundles/fosjsrouting/js/router"); // do not forget to dump your assets `symfony console assets:install --symlink public`
Routing.setRoutingData(routes);
module.exports = Routing;
然后将其导入到任何文件中以使用它:
其他.js
const Routing = import("./routing");
console.log(Routing.generate("another_exposed_route_name")); // will prints in console /path/to/another_exposed_route
您不需要将 routing.js
设置为 webpack 入口,也不需要将其包含在您的模板中。但是,如果您直接在 Twig 模板中编写 javascript,我不知道该怎么做。
希望您能找到解决方案。你也可以查看这个 tutorial在 SymfonyCasts 上。
关于Symfony 4 - Webpack-encore 使用 FosJsRouting : Routing is not defined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59967835/
我的 Twig View 中有这张表: Data 1 Data 2 DETAILS EDIT
我正在 Symfony 4 中开发一个需要 FOSJSrouting 包的页面。在我的开发环境中 - 使用 docker - 我使用以下步骤使其工作正常。 但是,在我的产品环境中,我不断收到错误: -
我尝试在我的 Symfony 4 项目中将 FosJsRouting 与 Webpack-encore 结合使用。 我做到了: 1. composer require friendsofsymfony
我尝试在我的 Symfony 4 项目中将 FosJsRouting 与 Webpack-encore 结合使用。 我做到了: 1. composer require friendsofsymfony
我是一名优秀的程序员,十分优秀!