问题标签 [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 投票
4 回答
25640 浏览

php - Symfony2 路由:不允许的方法(允许:{Method})

所以在 routing.yml 我定义了以下路由以编辑和删除特定设置:

路由.yml:

在我的控制器中,我定义了正确的操作: SettingController.php:

在第二个动作中,我只需要idandwidgetType传递,这样我就可以查询和删除选定的记录。

当我去任何一条路线时,我都会得到以下信息:

编辑路线错误:

找不到“GET /settings/2b2acd55-0dd6-11e5-8107-621ae3320fd4/defaults/edit/default”的路由:不允许方法(允许:POST、PUT)

删除路线错误:

未找到“GET /settings/2b2acd55-0dd6-11e5-8107-621ae3320fd4/defaults/delete/default”的路由:不允许方法(允许:删除)

但是当我删除一个并留下另一个时,它们工作正常。我假设它的路径定义是相似的?我是否可以保持相同的路径而不出现此错误?我不明白什么?

谢谢你的帮助,安思

0 投票
11 回答
23841 浏览

php - Symfony2:找不到“GET /lucky/number”的路由

我开始教程(作为新手),一切正常,直到:

http://symfony.com/doc/current/book/page_creation.html#creating-a-page-route-and-controller在步骤创建页面:路由和控制器

我创建了一个名为/var/www/html/[projekt]/src/AppBundle/Controller/LuckyController.php

但是当我打开http://[Server-IP]:8000/app_dev.php/lucky/number 时总是得到一个 404:

路由.yml

控制器

不知道错在哪里...

错误 - 未捕获的 PHP 异常 Symfony\Component\HttpKernel\Exception\NotFoundHttpException:“在 /var/www/html/[Symfony-Folder]/app/cache/dev/classes 中找不到“GET /lucky/number”的路由”。 php 行 2061

0 投票
2 回答
398 浏览

symfony - 基于身份验证将一个 url 路由到两个控制器操作

我对 Symfony 有点陌生,但我有一个易于解释的情况:

我有一个公共主页和一个私人主页。我想通过 URL“/”访问这两个

当未经身份验证的人访问地址 www.example.com/ 我希望他们被路由到 PublicController::indexAction()

当经过身份验证的用户访问地址 www.example.com/ 我希望他们被路由到 Privatecontroller::indexAction()

这可能吗?

(symfony 2.7 顺便说一句)

0 投票
3 回答
260 浏览

php - 从现有路由重定向到新路由

如果用户未登录(与 FOSUser 和 SonataAdmin 一起使用)并调用http://domain.com/app_dev.php(dev)或http://domain.com(prod),我正在尝试重定向,那么我希望在这两种情况下都重定向到,/login所以我在以下位置编写了这个配置app/routing.yml

那行得通,但我有一个问题,因为我在控制器中有这个:

然后,当我尝试brand使用以下链接按照示例调用路由时:http://domain.com/app_dev.php/?email=7x-xRFClkjw(dev) 或http://domain.com/?email=7x-xRFClkjw(prod) 我被重定向到/login. 我最好的想法是将我的代码更改为:

然后使用路由重定向到新的/bp而不是/该功能(这主要是因为用户已经有大量的电子邮件具有以前共享的链接,我无法更改)。但我不知道如何写这个规则,routing.yml因为如果我写了这个:

我将结束一个重定向循环。我还可以更改默认路由/login的设置方式,我只是找不到正确的文档。这篇文章背后的大想法是为/. 任何人都可以给我一些帮助吗?

作为额外信息,这是我security.yml文件的一部分:

更新

实际上来自@emmanuel-hdz-díaz 的代码给了我另一个想法,我不需要创建内核侦听器或添加太多代码,只需在我的控制器上执行此操作即可:

我能够将用户重定向到/login路线。

0 投票
2 回答
176 浏览

php - Symfony2 将路由定义为控制器中的注释

我需要一个专家的建议。在性能和标准方面什么是理想的?

1) 按照 Symfony 基础教程的建议在 src//Resources/config/routing.yml 中定义所有路由?

或者

2) 将控制器中的路由定义为注释?

两者似乎都是正确的并且工作正常。我的问题是证明哪个更适合性能并且更符合 symfony 标准。

0 投票
1 回答
426 浏览

php - Symfony CMF 动态路由器“无法匹配”日志

我有一个使用 Symfony CMF 路由包 1.3 的 Symfony 2.6 应用程序,我们将普通 symfony 路由和动态路由组合用于自定义存储(除其他外,下面的示例重点关注我们的动态路由器之一)。

问题是我们收到了关于路由器无法匹配动态路由的无休止的日志,当它们正常工作时。

最常见的条目是:

我们偶尔会看到

有没有办法禁用这些日志或更改我的动态路由器配置/设置,以便这些错误仅在路由实际失败时出现。

这是我的配置/设置:

而实际的动态路由器基于

如果有更好的方法来使用动态路由,我很乐意听到它:)

0 投票
3 回答
1154 浏览

php - Symfony,动态路由

我有一个 symfony 项目,其中有多个皮肤/模板,它们有自己的路线,有人知道正确的设置吗?

  • 每个皮肤/模板都是它自己的捆绑包,因为它不仅是皮肤和资产,还可能是某些皮肤中可能存在的服务。
  • 主机名决定皮肤。
  • 使用自定义 RouteLoader 加载目标包的 route.yml。

自定义 RouteLoader 完成了这项工作——但是生成的路由被缓存了,据我所知,没有办法阻止路由缓存。

一些建议是:

  • 创建 /{dynamic} 路由,因此手动形成路由.. 但我不想丢弃路由器的那部分功能,或重构整个项目..
  • 使用模板标识符为路由添加前缀。这将需要我加载所有 route.yml 文件,因为它们的共享路径是不可能的。

任何人?我真的不能同时进行多个项目,皮肤的数量将在 20-30 左右〜。

此设置的原因是因为它是 Content-as-a-Service .. 服务的目标,多个客户将项目用作平台,他们的设置决定使用哪些模板。

0 投票
1 回答
234 浏览

symfony - 自定义 Symfony CMF 动态路由器实现

我想将动态路由与默认控制器路由结合使用。我有一个表“页面”,其中有一列“url”,应检查传入的请求 url。如果在此表中找不到 url,则应检查默认控制器路由。

ChainRouter 应按以下顺序设置:

  1. 尝试将请求 url 与“页面”表中的“url”列匹配。通过该表中的数据,我知道使用哪个模板来返回响应。
  2. 检查默认控制器路由

我想我需要创建一个自定义动态路由器实现搜索页面表,这将是配置:

然后使用自定义的动态路由实现。但是我该怎么做呢?

0 投票
0 回答
32 浏览

symfony - Symfony2 路由结构“/”和“/news/page/{page}”

有没有办法将我的两条路线“/”和“/news/page/{page}”结合起来,这样我就不需要两条具有相同默认值的路线只显示起始页?如果一个元素有两条路线,我正在使用 knpmenubundle 并且无法将菜单项标记为活动。

0 投票
2 回答
730 浏览

symfony - 执行控制器之前的自定义授权检查

roles在路由设置中添加了一个新选项,用于在菜单呈现期间检查菜单项的权限。
如果我可以在执行相应的控制器之前使用该选项进行授权检查,那就太好了。

例子:

在执行控制器本身之前,我需要检查用户是否可以根据他的角色访问控制器。
怎么可能?有任何想法吗?

更新
为什么我需要这个roles选项?
项目中有4个不同的角色和许多路线。某些路由受保护并且仅对具有特定角色的用户可见。
目前所有的授权检查都是在控制器内部通过denyAccessUnlessGranted()方法执行的。
我还使用KnpMenuBundle来构建菜单。在菜单渲染期间,我需要检查当前登录用户的每个项目的可访问性。如果用户无权访问某个项目,则该项目将被排除并且用户看不到它。
为了检查用户是否可以访问某个项目,我添加了我提到的选项,我在其中定义了可以访问路由的角色。此roles选项定义的角色与签入中的角色完全相同denyAccessUnlessGranted(). 而且我认为既然我已经有了这些角色设置,为什么不将它用于控制器授权检查并从中删除冗余代码。