Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果某些条件适用,则删除Laravel URL的一部分_Laravel_Url_Routing_Laravel Routing_Laravel 5.2 - Fatal编程技术网

如果某些条件适用,则删除Laravel URL的一部分

如果某些条件适用,则删除Laravel URL的一部分,laravel,url,routing,laravel-routing,laravel-5.2,Laravel,Url,Routing,Laravel Routing,Laravel 5.2,我的网站上有许多使用自定义分页解决方案的路由,如/categories/{category}/page/{page?}。我目前将每个控制器设置为如下所示: public function index($category, $page = null) { if(!isset($page) || !is_numeric($page) || $page < 1) { return redirect()->route('parent', ['category' =&g

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

public function index($category, $page = null) {
    if(!isset($page) || !is_numeric($page) || $page < 1) {
        return redirect()->route('parent', ['category' => $category]);
    }
}
公共函数索引($category,$page=null){
如果(!isset($page)| |!是数字($page)| |$page<1){
return redirect()->route('parent',['category'=>$category]);
}
}
这样可以检查所提供的页码是否存在,是否确实是一个数字,以及是否大于零。如果这些条件中的任何一个为false,它将重定向到父路由,
/categories/{category}


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

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

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

在上面的例子中,只有当您从
/categories/{categories}

访问url
/categories/{categories}/page/{page?}
时,它才会起作用。我认为您最好的办法是创建另一条类似
/categories/{categories}
@lainer的路径。我已经这样做了,这就是我目前正在做的方式。我基本上只是想知道是否有办法在处理路由之前拦截它们,并在那里进行检查和修改,保留get和post变量。有没有办法获取当前URL,从中删除
/page/whatever
,然后通过输入重定向到该URL?@Furze
Request::URL()
将为您提供当前url。您可以使用
preg\u replace
删除
/page/任何内容