是否想创建这样的路径,但无法在控制器中找到确切的参数值?

时间:2019-06-03 08:59:01

标签: laravel routing

slug1和slug2中有问题

Route::get("/something/{slug1}-{slug2}-sample-sample" , "Controller@Method")->where(['slug1'=>'[a-z0-9-]+', 'slug1'=> '[a-z0-9-]+');

可以是xxx-yyy或只能是xxx

我只有一个参数值

1 个答案:

答案 0 :(得分:1)

因为您在slug1方法中两次放置了where,所以您的路由只对第一个子段进行了两次检查,还忘记了关闭数组:

Route::get("/something/{slug1}-{slug2}" , "Controller@Method")->where(['slug1'=>'([\w]+[-]{1}[\w]+)', 'slug2'=> '([\w]+[-]{1}[\w]+)']);

如果之后您想使用Method在控制器中获取这些值,则可以在该方法中将这些段作为参数传递:

public function Method($slug1, $slug2)
{
    dump($slug1, $slug2); //will display both slug's value
}

如果您想pass them to your view

public function Method($slug1, $slug2)
{
    return view('your-blade-view', ['slug1' => $slug1, 'slug2' => $slug2]);
}

并从您的视图中检索它们

{{ $slug1 }} //echo first slug
{{ $slug2 }} //echo second slug

更新:这是您正在寻找的REGEX:->where(['slug1'=>'([\w]+[-]{1}[\w]+)', 'slug2'=> '([\w]+[-]{1}[\w]+)']);参见here