如何在Laravel中处理包含参数中破折号的URL

时间:2019-06-25 12:48:40

标签: php laravel

我将路线定义如下。

Route::get('busses-from-{from}-to-other-city', 'Controller@method_a')->name('route_name_one');
Route::get('busses-from-{from}-to-other-road', 'Controller@method')->name('route_name');

一切正常,但是当我用破折号传递 {from} 值时,会引起问题。 (找不到404)。

作为示例,链接/ URL abc.com/busses-from-SouthAfrica-to-other-city可以正常工作,但是当我在-中添加SouthAfrica时,会引起问题。所以abc.com/busses-from-South-Africa-to-other-city根本没有用。

{from} 值可以包含一个或多个单词,这就是为什么我在这里询问解决方案的原因。

我知道可以在网址中添加+_,但这对SEO不利,而SEO是该项目中最重要的部分。

1 个答案:

答案 0 :(得分:3)

您应使用->where()为此参数设置the constraint,以包括破折号。这样Laravel知道此参数的外观。

Route::get('busses-from-{from}-to-other-city', 'Controller@method_a')
    ->name('route_name_one')
    ->where('from', '[A-Za-z0-9-]+');