问题标签 [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.
php - 当路由具有查询字符串时,Symfony 中的 ResourceNotFoundException
奇怪的问题
所以在我的管理包中,我有这样的路线:
这在访问页面时效果很好/media
除非我向路由添加查询字符串。像这样:/media?q=searchTest
。事实上,当我对管理包中的任何路由执行此操作时,它总是返回一个ResourceNotFoundException
这是纯文本堆栈跟踪
POST 工作,但查询字符串根本不会出于任何原因。
有任何想法吗?
symfony - 用定义的路径覆盖变量路径
我正在使用 fos userbundle 为路由创建页面/profile
。现在我也希望能够看到其他用户的个人资料,所以我创建了自己的控制器来生成/profile/{username}
.
我现在遇到的问题是我不能使用 fos userbundle path /profile/edit
。它确实显示了路径route:debug
有什么方法可以让路由/profile/edit 例外?
这是我的控制器:
谢谢你:)
php - Symfony2 路由之前的重定向
我正在开发一个高流量/高搜索引擎优化的网络。现在我们只是在动作开始时进行重定向,但它有点慢。
有没有办法在路由之前挂钩并在那里进行重定向(我们已经进行了 Redis 查询以了解 URL 是否为 301)?也许在Symfony之前就这样做了。
php - 使用 URI 值映射路由器占位符
我不知道如何解释,所以请放轻松。
路由器持有uri变量键
浏览器地址栏中的 URI
如何编写将路由器占位符变量与 URI 匹配值映射的代码。例如
请如果您理解可以将我重定向到正确的资源。
php - 在 symfony2 中检查路由
我想学习 symfony 并开始创建一个小应用程序。我有一个与路线有关的问题。所以,我在我的项目中有路线:
/admin/homepage
, /admin/news
,admin/galery
不,如果我写在 url /admin
,这条路线不存在,我得到错误No route found for "GET /admin/"
。是否存在检查路由是否不存在并重定向到另一条路由的方法?提前谢谢,对不起我的英语我的路线:
php - Symfony 3 将所有路由重定向到当前语言环境版本
我正在开发一个 symfony 应用程序,我的目标是无论用户在哪个页面上,它都会导航到页面的区域设置版本。
例如,如果用户导航到“/”主页,它将重定向到“/en/”
如果他们在 "/admin" 页面上,它将重定向到 "/en/admin",这样_locale
属性是从路由设置的。
如果他们从用户浏览器访问/admin,它还需要确定语言环境,因为没有确定语言环境,因此它知道要重定向到哪个页面。
目前我的默认控制器如下所示,因为我正在测试。我正在使用开发模式和分析器来测试翻译是否正确。
如果用户导航到那里,当前的方法将使用户保持在“/”,但我想让它重定向到“/en/”。这也适用于其他页面,例如 /admin 或 /somepath/pathagain/article1 (/en/admin , /en/somepath/pathagain/article1)
我该怎么做?
我读过的参考文献没有帮助:
Symfony2 在路由中使用默认语言环境(一种语言的一个 URL)
::更新::
我还没有解决我的问题,但我已经接近并学习了一些提高效率的技巧。
DefaultController.php
配置.yml
注意参数下的值app.locales: en|es|zh
。现在,如果我打算在将来支持更多语言环境,我可以在创建路线时参考这个值。对于那些好奇的人,这些路线是英语,西班牙语,中文。在注释中的 DefaultController 中,"%app.locales%"
是引用配置参数的部分。
我当前方法的问题是转到/admin,例如不会将用户重定向到/{browsers locale}/admin,这将是保持一切井井有条的更优雅的解决方案......但至少路由有效。仍在寻找更好的解决方案。
****更新****
我想我可能在这里找到了答案作为给出的底部答案(向所有路线添加区域设置和要求 - Symfony2),Athlan 的答案。只是不确定如何在 symfony 3 中实现这一点,因为他的指示对我来说不够清楚。
我认为这篇文章也可能有所帮助(http://symfony.com/doc/current/components/event_dispatcher/introduction.html)
php - @param 关键字在 symfony 路由中有什么作用
在路线的注释中,@param 是什么意思?
我在 symfony 网站上找不到任何关于这个关键字的文档,并且对它的用途和作用感到非常困惑。
我之所以问,是因为我试图弄清楚如何访问 .yml 文件中的参数以在路由中使用,但我仍想使用注释而不是 YML 路由方法。
显示代码示例可能不是最好的,但这里是 @param 出现的地方
我从这里(带有可选参数的注释中的 Symfony2 路由)
任何帮助表示赞赏,谢谢!
php - 用户提交表单,但在他注册或登录之前不要保存
我有很多用户在单页上填写的表单,但是在用户发布后,控制器将检查表单是否有效以及用户是否已经登录然后保存信息。
需要帮助
如果用户未登录,则将他重定向到他注册的注册页面,注册后他将自动登录,然后它应该返回到带有发布值的同一个控制器,以便可以保存它。
$form->isValid && !$this->getUser()
然后将用户重定向到使用保存在会话中的此表单值的注册页面?- 用户注册或登录后,然后返回上一个控制器(无需任何进一步操作),它应该会自动保存之前提交的表单。因为它是
$form->isValid()
我很困惑,我应该在会话中保存表单值并重定向吗?它会正确保存模型值吗?
另外我应该如何将用户重定向到注册页面,同时告诉 Symfony 在登录后使用 post 方法返回同一页面。
symfony - Symfony2 和 Nginx,按主机名路由
我有一个名为 SymfonyProject 的 Symfony2 项目。
到目前为止,我有一个指向该项目的 nginx 配置文件www.symfonyproject.com
我在 SymfonyProject 中开发了一些静态树枝页面,我想用另一个 url 访问它们:www.symfonyproject2.com
所以,www.symfonyproject2.com 只会从 SymfonyProject 访问一条路由。
如何用 Nginx 做到这一点?我在启用的站点中创建了另一个配置文件,但不知道如何将流量重定向到特定的 symfony2 路由。
php - 如何调试(和修复)Symfony2|3 路由?
我app/config/routing.yml
在 Symfony 2.8 应用程序中定义了这些路由:
正如您可能已经注意到PlatformAdminBundle
的是后端和PlatformChatBundle
前端。考虑到这一点,我正在尝试设置并为两者使用一个防火墙,然后将security.interactive_login
事件重定向到正确的路由|路径。这是防火墙的样子:
但这不起作用,因为当我尝试以任一用户身份登录时,都会出现以下错误:
您必须在安全防火墙配置中使用 form_login 配置要由防火墙处理的检查路径。
这让我觉得路由或防火墙没有正确配置。我检查了调试工具栏下的路线,没有匹配,所以它们是错误的。我在这里阅读了文档,但它根本没有帮助,我没有得到解决问题的方法。你可以把这篇文章作为这篇文章的第二部分,但我不想改变旧文章的主题,也不想改变内容,因为我认为这对其他人的未来会有所帮助。所以,有什么建议吗?您将如何调试与路由相关的此类问题?任何解决我的特定问题?我真的被困在这里了!
更新
我已经按照@xabbuh 的建议进行了更改,所以现在app/config/routing.yml
看起来像:
和``看起来像:
清除缓存后,这是我的尝试和结果:
- 登录身份
ROL_CHATTER
:我http://domain.tld/app_dev.php/chat/
将按预期获得登录表单并使用有效凭据我收到以下消息:访问被拒绝。你在喋喋不休。这是正确的,因为我有一个监听security.interactive_login
器,这就是用户使用这些凭据登录时我正在做的事情。 - 登录身份
ROL_ADMIN
:我http://domain.tld/app_dev.php/admin/
将按预期获得登录表单并使用有效凭据我收到以下消息:错误凭据。这是错误的,因为凭据是有效的,至少我应该收到另一条消息(访问被拒绝。您是管理员),因为监听器在security.interactive_login
但正如我所说的那样,这不是正在发生的事情。
与听众有关的信息在这篇文章中。怎么了?