【问题标题】:Removing part of a Laravel URL if certain conditions apply如果某些条件适用,则删除 Laravel URL 的一部分
【发布时间】:2016-05-19 07:17:45
【问题描述】:

我的网站上有许多使用自定义分页解决方案的路由,例如/categories/{category}/page/{page?}。我目前将每个控制器设置如下:

public function index($category, $page = null) {
    if(!isset($page) || !is_numeric($page) || $page < 1) {
        return redirect()->route('parent', ['category' => $category]);
    }
}

这具有检查提供的页码是否存在、确实是一个数字以及它是否大于零的预期效果。如果其中任何一个条件为假,它就会重定向到父路由/categories/{category}

问题是,对于这些解决方案中的每一个,它们都要求我写上父路由的名称来进行重定向。如果我只想切断/page/ 及以后,但保留任何 get 变量和 post 变量,我该怎么做?

【问题讨论】:

  • 我认为最好的办法是创建另一条路线,例如/categories/{category}
  • @noodles_ftw 我已经这样做了,这就是我目前正在这样做的方式。我基本上只是想知道是否有办法在处理路由之前拦截它们,并在那里进行检查和修改,保留 get 和 post 变量。

标签: laravel url routing laravel-routing laravel-5.2


【解决方案1】:

如果您尝试使用输入重定向回上一页,请使用以下代码。

return redirect()->back()->withInput();

在上述情况下,只有当您从 /categories/{category} 访问 url /categories/{category}/page/{page?} 时,它才会起作用

【讨论】:

  • 有什么方法可以获取当前 URL,从中删除 /page/whatever,然后通过输入重定向到该 URL?
  • @Furze Request::url() 会给你当前的网址。您可以使用preg_replace 删除/page/whatever
猜你喜欢
  • 1970-01-01
  • 2019-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-11
  • 2018-10-04
  • 2019-06-18
相关资源
最近更新 更多