【问题标题】:Laravel - "simulate"/call a route routineLaravel - “模拟”/调用路由例程
【发布时间】:2017-01-13 23:56:30
【问题描述】:

在 Laravel 中,我希望为简单的页面功能提供动态路由。

假设我有几个路由,比如/blog 将调用 BlogController 等等。我有这样的路由 /page/{slug} 调用 PageController。

如果找不到路由(例如/my-test-page),我该怎么做,系统会像路由是/page/my-test-page一样调用控制器(这样只有在PageController找不到页面时才会抛出404数据库)。

我看到我可以捕获 404 异常,但我不知道如何模拟从那里对 PageController 的路由调用?

非常感谢!

【问题讨论】:

  • 为什么不直接为PageController注册路由/{slug}
  • 因为我的路由是从不同的路由文件(针对不同的模块)动态加载的,我无法确保这条路由最后注册。所以我不想,比如说,/blogPageController 而不是BlogController 赶上
  • “我不能确保这条路线最后注册” - 为什么不呢?
  • 由于系统有许多模块,并且它们为系统的每个实例动态注册/启用。我想我可以硬编码,以便特定的“页面”模块最后注册它的路线,但似乎是一种 hacky 解决方案?

标签: php laravel routes


【解决方案1】:
redirect(action(PageController@methodName))

这能解决您的问题吗?当然你需要导入 redirect() 方法。

【讨论】:

  • 它确实以某种方式解决了它,但是,我正在寻找是否有可能的解决方案而不更改 URL?所以对于用户来说,它保持为http://example.com/my-test-page
  • 这会导航到控制器方法,在那里你可以返回你需要的视图。我错过了什么吗?
  • redirect 不会重定向到操作吗?所以用户最终会回到http://example.com/page/my-test-page
  • 它将带你到控制器,在那里你可以决定是返回 my-test-page 还是 page/my-test-page。
猜你喜欢
  • 2021-11-02
  • 1970-01-01
  • 2021-09-14
  • 2016-05-26
  • 2020-09-09
  • 2012-05-02
  • 2023-04-01
  • 1970-01-01
  • 2017-05-18
相关资源
最近更新 更多