Webpack FOSJsRoutingBundle 与 Symfony Flex 和 Angular 集成

2023-12-04

我不明白FOSJs路由包跟...共事Symfony Flex、Webpack and AngularJS.

我已经在 Symfony 3 和 AngularJS 中使用这个包很长时间了,从来没有出现过问题,但随着 Symfony Flex 中引入 webpack,设置变得更加复杂。不幸的是,FOSJsRoutingBundle 版本 2.2 的文档尚不清楚。

您可以找到该捆绑包的当前文档here.

我正在使用FOSJs路由包这样我的 Angular HTTP 请求就可以使用生成的路由而不是绝对 URL。

问题

我已经按照作曲家的记录设置了这个捆绑包。然后将路由转储到位于以下位置的 json 文件:code/assets/fos_js_routes.json。该文件中生成的路由是有效的并且是我期望看到的。

当我使用 Angular 时,我想在一个单独的文件中进行路由的初始必需声明,以便我的所有 Angular 控制器都可以使用Routing.无需在这些文件中做任何进一步的工作。


FOS安装文件 /code/assets/js/fos_js_router.js (以下文档)

const routes = require('../../assets/fos_js_routes.json');
import Routing from '../../vendor/friendsofsymfony/jsrouting-bundle/Resources/public/js/router.min.js';

Routing.setRoutingData(routes);

示例 Angular 文件 /code/assets/js/apps/default/controller/test.js

(function () {

    'use strict';

    angular.module('test')
    .controller(
        'TestCtrl',
        ['$scope', '$http',
            function ($scope, $http) {

                let url = Routing.generate('test_route_name');
             }
         ])
});

Webpack 配置

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

Encore
    .setOutputPath('public/build/')
    .setPublicPath('/build')
    .addEntry('app', './assets/js/app.js')
    .addEntry('app_fos_router', [
        './assets/js/fos_js_router.js'
    ])
    .addEntry('app_angular', [
        './assets/js/apps/default/app.js', // angular app setup
        './assets/js/apps/default/routes.js', // angular routes setup
        './assets/js/apps/default/controller/test.js' // angular where Routing is needed
    ])
    .enableSingleRuntimeChunk()
    .cleanupOutputBeforeBuild()
    .enableBuildNotifications()
    .enableSourceMaps(!Encore.isProduction())
    .enableVersioning(Encore.isProduction())
;

module.exports = Encore.getWebpackConfig();

前端树枝模板

{% extends 'base.html.twig' %}

{% block title %}Test{% endblock %}

{% block javascripts %}
    {{ encore_entry_script_tags('app') }}
    {{ encore_entry_script_tags('app_fos_router') }}
    {{ encore_entry_script_tags('app_angular') }}
{% endblock %}

{% block body %}
    <div ng-app="test" ui-view="content"></div>
{% endblock %}

错误

从上面的设置我得到test.js: ReferenceError: Routing is not defined at在我的 AngularJS 文件中。

我需要做哪些不同的事情才能利用let url = Routing.generate('test_route_name');在我的 AngularJS 文件中?


创建文件router.js在你的assets/js目录。接下来填写router.js包含以下内容:

const routes = require('./fos_js_routes.json');
const router = require('../../vendor/friendsofsymfony/jsroutingbundle/Resources/public/js/router.min.js');
router.setRoutingData(routes);
module.exports = router;

在您的中提供新变量webpack.config.js像这样:

.autoProvideVariables({
    "Routing": "router",
})

将新的加载器添加到您的 webpack 中:

.addLoader({
    test: /jsrouting-bundle\/Resources\/public\/js\/router.min.js$/,
    loader: "exports-loader?router=window.Routing"
})

最后扩展 webpack 配置:

let config = Encore.getWebpackConfig();

config.resolve.alias = {
'router': __dirname + '/assets/js/router.js',
};

module.exports = config;

它应该使 Routing 成为一个全局对象,以便您可以在其他 js 文件中使用它,如下所示:

let url = Routing.generate('some_route_name', { param: value });

希望能帮助到你。干杯。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack FOSJsRoutingBundle 与 Symfony Flex 和 Angular 集成 的相关文章

随机推荐

  • 如何在不使用 cron 作业的情况下在谷歌云中安排 python 脚本?

    我有两个 python 脚本在我的本地环境中每天运行一次 一是获取数据 二是格式化数据 现在我想将这些脚本部署到 Google 的云环境并每天运行一次 两次 我可以使用 Google Cloud Function 执行此操作还是需要 App
  • 使用route-helper将查询参数添加到现有参数中

    我使用路线助手 route routename 在我的 Blade 模板文件中过滤和 或排序页面的结果 将参数附加到前面的参数的最简单方法是什么 举个例子 我访问页面 category1并查看一些产品 现在我使用排序将 URL 更改为 ca
  • 使用 R 和 ggplot2 语法将自定义工具提示添加到绘图中

    我正在尝试使用 ggplot 对象从 R 创建一个绘图 该对象具有自定义标签 library devtools install github ropensci plotly library plotly set credentials fi
  • PHP脚本将大文本文件分割成多个文件

    我正在努力创建一个 PHP 脚本来帮助根据行数将一个大文本文件拆分为多个较小的文件 我需要增加分割的选项 因此第一个文件从 10 行开始 第二个文件从 20 行开始 依此类推 这是我的脚本中的一个函数
  • Obj-C @synthesize [重复]

    这个问题在这里已经有答案了 可能的重复 在 Objective C 中使用下划线作为属性名称前缀 iPhone 应用程序开发初学者在这里 in h property nonatomic retain IBOutlet UILabel det
  • 为什么第 n 个子选择器不起作用?

    我正在使用nth child选择器为不同的社交图标添加背景图像 然而 所有图标看起来都是一样的 我究竟做错了什么 social logo display inline block width 24px height 24px transit
  • jQuery 中的鼠标滚轮问题

    我在头部有以下代码 jQuery function box bind mousewheel function event delta var dir delta gt 0 Up Down vel Math abs delta alert d
  • 调整图像内容大小但保持图像尺寸

    我正在尝试使用 PyGame 在 Python 中制作一个基本的 Pokemon 副本 我过去遵循过一些有关该库的教程 因此 对于这个项目 我将有一个基本的瓦片结构 要么是草 要么是水 玩家不能在水方块上移动 但可以在草方块上自由移动 我通
  • AspNetCompiler MSBuild 任务中的虚拟路径 - 它是否必须等于最终部署的虚拟路径?

    这是 VS 2008 和 Net 3 5 我使用自定义部署项目脚本 该脚本类似于发布右键单击菜单 但我已对其进行了自定义以执行文件重命名和各种其他零碎操作 它工作得非常好 并且大大简化了发布程序 本周末我发现我们的一个实时网站存在一个问题
  • 在 AJAX 之前我需要学习 Javascript 还是 AJAX 不需要 Javascript 知识? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 我想知道是否值得先学习javascript AJAX 是否需要 JavaScript 或者只是标记语言的相似之处 你绝对应该学习 javascript 而且因为AJAX是用javascri
  • 不使用 Composer 安装 PHPMailer

    请原谅我的无知 我正在尝试在 Linux 上的 PHP 5 6 下安装 PHPMailer 6 0 1 我的 PHP 安装是远程的 我通过 FTP 管理所有网站的 PHP 我通常将软件包作为 zip 下载到 Win 10 解压 然后将结果通
  • 将无头浏览器与 Heroku Rails Unicorn 堆栈结合使用

    我看到过一些帖子 您可以更改 Heroku 上的构建 以将 PhantomJS 与 Cedar 堆栈一起使用 但是是否可以在 unicorn 堆栈上运行无头浏览器 是的 有人已经编写了一个包含 PhantomJS 的构建包 互联网和开源非常
  • 使用 Linq 遍历层次结构表

    我有一个包含两列的表 GroupId 和 ParentId 均为 GUIDS 该表形成了一个层次结构 因此我可以在 GroupId 字段中查找值 当我找到它时 我可以查看它的 ParentId 这个ParentId也会出现在不同记录的Gro
  • Jquery 中的去抖动功能?

    一直在寻找 Jquery 中的去抖函数或去抖方法 动画的构建可能会变得非常烦人 代码如下 function fade media hide media fadeIn 2000 var debounce false function colo
  • 预先已知字符串的完美哈希函数

    我有 4000 个字符串 我想用这些字符串创建一个完美的哈希表 字符串是预先知道的 所以我的第一个想法是使用一系列if声明 if name aaa return 1 else if name bbb return 2 4000th if s
  • 使用 C# 以编程方式更改 ipsec 规则的方法?

    我知道如何执行 IPsec 更改的唯一方法是调用 netsh 来进行更改 有没有直接使用 System Management 和 WMI 对象的方法 如果是这样 那是什么 我很难通过 MSDN 找到相关的 WMI 信息 或者有人使用过其他有
  • 是否可以从另一个文件调用测试函数来开始测试

    是否可以从非测试 go 文件中调用测试函数来开始执行测试 例如 我有一个测试功能 package API import testing func TestAPI t testing T 我需要从非测试 go 文件中调用它 package m
  • 在 Three.js 中渲染具有输入顶点的多边形

    我有多边形的顶点 x y z 坐标 作为输入 如何在 Three js 中渲染具有这些顶点的多边形 有this但似乎涉及到贝塞尔曲线 我需要简单的直边多边形 您可以使用以下代码从顶点创建多边形 var geom new THREE Geom
  • 测试 Postgres 表分区的 HASH 函数

    我正在使用 Postgres 11 并且想在主键是 UUID 的表上使用哈希分区 我知道我需要预先选择多个分区 并且主键上的哈希函数的模数将用于将行分配给每个分区 像这样的事情 CREATE TABLE new table id uuid
  • Webpack FOSJsRoutingBundle 与 Symfony Flex 和 Angular 集成

    我不明白FOSJs路由包跟 共事Symfony Flex Webpack and AngularJS 我已经在 Symfony 3 和 AngularJS 中使用这个包很长时间了 从来没有出现过问题 但随着 Symfony Flex 中引入