如何将具有相同前缀的所有URL路由到一个操作

时间:2016-01-06 00:50:08

标签: php laravel

我想将具有相同前缀的所有网址路由到相同的操作,如:

http://host/pic/with/bird

http://host/pic/with/bird/with/fish

http://host/pic/with/pig/theme/sad/resolution/high

全部到Piccontroller @ showPic

我试着写出像

这样的路线
Route::get("/pic/*","Piccontroller@showPic");

将所有url以/ pic /开头路由到同一个函数。 但是*没有工作的路线。

1 个答案:

答案 0 :(得分:2)

如果你看一下Illuminate\Routing\Route,就会有一个名为where()的方法。对该方法的评论说"在路线上设置正则表达式要求。"

看起来像这样:

Route::get('/pic/{section}', 'Piccontroller@showPic')->where(['section' => '.*']);

基本上意味着它将在/pic/部分之后采取任何内容,并将其作为变量传递给showPic()方法。现在,解析方法应该像正斜杠上的简单explode()一样简单,假设您有某种模式或只是尝试获取每个值。