【问题标题】:Laravel option route parameter not workingLaravel 选项路由参数不起作用
【发布时间】:2016-10-06 20:05:45
【问题描述】:

我正在使用 laravel 5.2 并且在路由方面遇到问题。假设我有这条路线:http://example.com/out/parameter1/parameter2/

Parameter1 应该是必需的,而 Parameter2 应该是可选的。当用户输入此网址:http://example.com/out/parameter1/ 或此http://example.com/out/parameter1/parameter2/,他们应该能够继续。输入时,http://example.com/out/ 他们将被重定向到主页。

这是我的路线:

Route::get('out/{param1}/{param2?}', 'MyController@out']);
Route::get('out/', 'MyController@redirect']);

控制器:

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 指定了一个默认值。

【问题讨论】:

  • 检查您的路由器。更改 Route::get('out/{param1}/{param2?}', 'MyController@out']);到 Route::get('out/{param1}/{param2}', 'MyController@out']);
  • @MansoorH,它不起作用,因为我收到 404 错误。此外,param2 应该是可选的。
  • 第三个参数的可能值你能定义一下吗
  • 改一下,public function out($param1, $param2 = null, Request $request) { }
  • @Uchiha, param2 可以是任何东西。

标签: php laravel routes laravel-5.2 laravel-routing


【解决方案1】:

请求实例必须是第一个

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

Docs: https://laravel.com/docs/5.2/controllers 在方法注入下

【讨论】:

  • 这行得通!!!!谢谢!!我仍然无法接受这是正确的答案,因为它需要我几分钟。我会在一段时间内标记这个:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-13
  • 2018-10-04
  • 2016-01-26
  • 2016-11-05
  • 2015-01-26
  • 2015-03-13
相关资源
最近更新 更多