2016-06-07 107 views
0

我使用laravel 5.2和具有关于路由问题。假设我有这样的路线:http://example.com/out/parameter1/parameter2/Laravel选择路线参数不工作

参数1应要求而参数2应该是可选的。当用户输入这个网址:http://example.com/out/parameter1/或本http://example.com/out/parameter1/parameter2/,他们应该能够继续进行。当输入时,http://example.com/out/他们将被重定向到主页。

这里是我的路线:

Route::get('out/{param1}/{param2?}', '[email protected]']); 
Route::get('out/', '[email protected]']); 

控制器:

public function out($param1, $param2 = '', Request $request) { 
    // logic here 
} 

是我得到的错误是这样的: Argument 3 passed to App\Http\Controllers\MyController::out() must be an instance of Illuminate\Http\Request, none given

我已经指定param2上的默认值方法。

+0

检查与您的路由器。改变路线::获得( '出/ {参数1}/{参数}?', '@ myController的出']);到路线::得到( '输出/ {参数1}/{参数2}', '@ myController的出']); –

+0

@MansoorH,它不工作,因为我得到一个404错误。另外,'param2'应该是可选的。 – basagabi

+0

什么可以第三个参数的可能值可以请你定义 –

回答

1

请求实例必须是第一位的

public function out(Request $request, $param1, $param2 = '') 
{ 
    // logic here 
} 

文档:https://laravel.com/docs/5.2/controllers下的方法注入

+0

这工作!谢谢!!我仍然无法接受这是正确的答案,因为它需要我几分钟的时间。我会在一段时间标记这一点:) – basagabi