忽略Laravel中的可选参数?

时间:2018-07-11 16:28:06

标签: php laravel

当前在我的路线文件中,我定义了以下路线:

Route::get('{country}/{county}/{city?}/{id}', 'AdsController@show')->name('show')->where('id', '[0-9]+');

AdsController中,我具有以下功能:

public function show($country, $region, $city = null, $id) {
    if($city !== null)
        echo "we do something here extra";
    echo "Let's run our normal function";
}

唯一的问题是看来我必须传递$city变量吗?例如,如果我访问http://example.com/mycountry/myregion/mycity/1可以正常工作吗?但是如果我要运行http://example.com/mycountry/myregion/1,它会显示 404 ,除了创建多条路线之外,他们是否仍在此周围?

1 个答案:

答案 0 :(得分:2)

您将必须创建两条单独的路线。 Laravel不会将斜杠(/)解释为空变量。

您还可以在路由URI中传递零('0')值(例如:/ mycountry / myregion / 0/1)。

此外,您可以将可选的路线参数放在路线的末尾。这可能会有帮助。