我在laravel框架上为我的php服务器创建路由。如何通过剥离不必要的位从斜杠分隔的URL中提取正确的参数值?
当url模式以Route::get('user/{event_id}',function ($event_id){return view('rsvp',['event_id'=>$event_id]);})->where(['event_id'=>'[0-9]+']);
的形式设置时
它正如预期的那样工作。但是,我想以'user/event-description-here5_now-<event_id>
的形式解析一个url并实现相同的功能。也就是说,我想在我的php文件中使用event_id
并忽略event-description-here5_now
位。我该怎么办呢?
这是不可能的,因为laravel路径模型绑定通过通配符工作,并且当尝试从url段提取数字时它不起作用。
为了使其工作,您将必须自定义laravel路径解析逻辑:https://laravel.com/docs/5.8/routing#route-model-binding
类似的东西:
public function boot()
{
parent::boot();
Route::bind('eventslug', function ($value) {
preg_match('/\d+/', strrev($value), $matches);
return Event::find($matches[0]) ?? abort(404);
});
}
或尝试调整网址,如:
user/event-description-here5_now/{event_id}