问题标签 [symfony-routing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
294 浏览

php - Symfony2验收测试不起作用

目前,我正在为 Symfony2 应用程序编写验收测试用例。我正在关注。

但是它无法查看以下日志文​​件。

看起来

似乎$_SERVER变量中缺少一些值。任何线索或是否有更好的方法来编写测试用例。

数据助手.php

0 投票
1 回答
357 浏览

php - 如果文件存在则让 Apache 处理请求,否则通过 Symfony 前端控制器路由它

我有一个非常旧的 php 应用程序,我正在尝试更新到 Symfony。

该应用程序当前具有类似于此的结构:

这些页面有充满功能等的帮助文件,还有一些充满资产的文件夹,但这并不重要。因此,要访问给定页面,您需要将浏览器指向 domain.com/php_page1.php 或 domain.com/dashboard/dashboard_page1.php ......没有前端控制器。所有页面都可以直接访问。

总而言之,一次要重构的东西太多了,所以我想分批进行,一次一页。

我想要做的是在我现在拥有的之上安装 symfony,因此 symfony 结构将与当前的结构共存:

我已经成功安装了 Symfony 并迁移了一个示例遗留页面(请注意移动的 web 根目录)。这很好用。

问题是,最终,如果存在遗留页面,我需要 Apache 来提供服务,如果不存在,则通过前端控制器 (app.php)。

这是我尝试过的。

我尝试了各种 .htaccess 规则来尝试让 Apache 在 /www 和 /www/dashboard 中提供文件。这些都失败了,Symfony 告诉我没有匹配的路线。

我也试过 Symfony 的$this->redirect('..\www\php_page1.php');. 这失败了 Symfony 告诉我“看起来你试图在配置的目录之外加载模板。”

最后我尝试添加 /dashboard 作为路由:

并添加了一条树枝路径:

这导致了三个例外:

FileLoaderLoadException in FileLoader.php第 118 行:

InvalidArgumentException in YamlFileLoader.php第 371 行:

ParseException in Inline.php第 108 行:

问题

所以我的问题是:如何配置 Symfony / Apache 以便如果调用当前存在的 url(即 domain.com/php_page1.php),它将直接通过 Symfony 或 Apache 提供该页面,如果它不存在,有 Symfony 的前端控制器处理请求吗?

编辑

这是我目前拥有的 .htaccess:

这适用于 Symfony 并路由我已定义路由的任何内容。问题是它在 /www/web(新的 web 根目录)中,这是 Symfony 想要的 web 根目录。它不会访问位于 Web 根目录之外的 /www 或 /www/dashboard 中的任何内容。

我正在尝试使用 .htaccess 来让 Apache 从 Web 根目录下一层抓取文件,或者让 Symfony 将这些页面作为通用 php 脚本提供服务。

0 投票
2 回答
461 浏览

content-management-system - 如何向现有 Symfony 应用程序添加简单的 CMS 功能

我有一个访问 MySQL 数据库的现有 Web 应用程序。我正在将此应用程序移植到 Symfony。新应用程序必须使用旧数据库,因为我们不能一次移植整个应用程序,即旧应用程序和新应用程序访问同一个数据库并且应用程序同时运行。

旧应用程序有一个简单的 CMS 功能,必须移植:

有一个page代表页面树的表。每个页面都有一个slug字段。URL 路径由代表标识页面节点的路径的那些 slug 组成,例如"/[parent-slug]/[child-slug]".

页表还包含一个content字段。正如我已经提到的,CMS 功能非常简单,因此内容只是呈现为页面布局内的页面内容。页面条目还指定页面布局/模板。

我的问题是我不知道如何设置路由。在一个普通的 Symfony 应用程序中,我以前知道 URL 模式,但在这种情况下它们是动态的。路由也不能被缓存,因为用户可以随时更改它们。我想知道我是否必须完全放弃 Symfony 的路由并自己实现一些东西。但是怎么做?

现在我找到了 Symfony CMF,它讲述了很多关于框架 VS CMS 路由冲突的信息。所以首先,我认为这是正确的方法。然而,这些教程旨在构建一个基于 PHPRC 的全新应用程序。我无法将教程的概念推导出到我的用例中。

0 投票
0 回答
71 浏览

symfony - 在 RouteProviderInterface 实现中获取用户

是否可以在RouteProviderInterface实现中获取用户?

我的 RouteProviderInterface 实现加载了许多新的路由,没什么特别的。但是如果用户登录,我想根据用户设置自定义路由。

如果我注入 TokenStorage,则用户未加载且为空:

有没有其他方法可以获取用户?

一些基于评论的编辑:

  • 我正在与经过身份验证的用户一起尝试此操作。我还将用户转储到正在使用的实际控制器中,并且用户确实存在
  • 所有防火墙在配置中都有“无状态:真”
0 投票
1 回答
902 浏览

php - symfont 路由中 slug 的正则表达式

我在创建正则表达式以匹配 URL slugs [az] (由单个破折号分隔的“单词”)时遇到问题,如下所示:

在路线:

在树枝上:

显示的错误是:

渲染模板期间抛出异常(“路由“csa_platform_category”的参数“slug”必须匹配“[az]+(?:-[az]+)*”(“”给定)以生成相应的URL 。”)。

我对正则表达式很不好,所以任何帮助都将不胜感激。

0 投票
2 回答
2953 浏览

symfony - Symfony 默认语言环境,没有在 URL 中指定

我想配置 Symfonylocale选项,以便我可以成功访问以下路由:

目前,我可以访问/{locale}/route并获得我的视图,但是,/route返回一个No route found for "GET /route". 我的配置如下:

我的控制器有以下注释:

如果我特别包含locale,一切正常。如果我排除locale,我会收到No route found错误消息。

0 投票
1 回答
591 浏览

php - Zend Expressive 中的主机名路由

Zend Expressive 有 Aura.Router、FastRoute 和 zend-mvc 路由器的适配器,并且路由可以轻松匹配方法和路径:

使用zend-mvc 路由器组件可以匹配主机名:

这也可以通过 Symfony路由组件实现:

因此,我希望能够使用 Expressive 做类似的事情,并根据子域将请求分派到不同的中间件:

提前致谢!

0 投票
1 回答
498 浏览

php - 没有自定义控制器代码的 Symfony 2 路由

我在我的 SF2 应用程序中使用注释定义了我的路由,但是有一些页面虽然它们具有不同的路由和 Twig 模板,但它们不需要任何控制器代码,这会导致诸如以下的空方法:

对我来说,这似乎毫无意义和混乱。有没有办法在 SF2 中避免这种情况,而无需将我的所有路由转换为在 YAML 文件中进行管理?

0 投票
1 回答
423 浏览

symfony - Symfony 3 重定向除特定前缀之外的所有路由

我正在尝试使用 symfony 和 angular 2 构建一个应用程序,我想知道是否可以将所有路由重定向到一个以 /api 前缀开头的特定操作 exept uri。

提前致谢。

0 投票
2 回答
923 浏览

symfony - 路由器和 {slug} 检索实体

在一个实体中,我用 DoctrineExtension 定义了一个 slug,我在我的 href 中使用它。但是...我的路由器和/或 ParamConverter 有问题。

在我的控制器中:

我有这个错误:

SQLSTATE[HY093]:参数号无效:参数未定义

在调试栏中,我看到,问题是数组中的数组:

参数:[ 0 => [ slug => t1p-0004-e-coli-pgem-t-promupf3-leu2-termupf3 ] ]

当我用 {id} 替换 @Route: {slug} 并手动输入网址时,我已经

参数:[0 => t1p-0004-e-coli-pgem-t-promupf3-leu2-termupf3]

而且......这是工作,但在我的存储库中,我有:

我不明白为什么。