通过删除Laravel中的额外字符,从斜杠分隔的URL中提取参数值

问题描述 投票:0回答:1

我在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位。我该怎么办呢?

php regex laravel url-routing laravel-routing
1个回答
1
投票

这是不可能的,因为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}

© www.soinside.com 2019 - 2024. All rights reserved.