使用 Laravel 5 方法注入和其他参数
Using Laravel 5 Method Injection with other Parameters
所以我正在开发管理界面。我的路线设置如下:
Route::controllers([
'admin' => 'AdminController',
]);
然后我有一个带有一些方法的控制器:
public function getEditUser($user_id = null)
{
// Get user from database and return view
}
public function postEditUser($user_id = 0, EditUserRequest $request)
{
// Process any changes made
}
如您所见,我正在使用方法注入来验证用户输入,因此 URL 看起来像这样:
http://example.com/admin/edit-user/8697
GET 请求将转到 GET 方法,而 POST 请求将转到 POST 方法。问题是,如果我创建一个新用户,将不会有 ID:
http://examplecom/admin/edit-user/
然后我得到一个错误(解释):
Argument 2 passed to controller must be an instance of EditUserRequest, none given
所以现在我正在传递一个 0 的 ID 以使其能够用于创建新用户,但是这个应用程序才刚刚开始,所以我是否必须在整个应用程序中都这样做?有没有更好的方法来传递验证方法和可选参数?任何智慧将不胜感激。
您可以颠倒参数的顺序,因此可选参数是结尾:
public function postEditUser(EditUserRequest $request, $user_id = null)
{
}
Laravel 然后将首先解析 EditUserRequest
,如果没有 user_id,则不再传递任何内容,因此默认值将生效。
所以我正在开发管理界面。我的路线设置如下:
Route::controllers([
'admin' => 'AdminController',
]);
然后我有一个带有一些方法的控制器:
public function getEditUser($user_id = null)
{
// Get user from database and return view
}
public function postEditUser($user_id = 0, EditUserRequest $request)
{
// Process any changes made
}
如您所见,我正在使用方法注入来验证用户输入,因此 URL 看起来像这样:
http://example.com/admin/edit-user/8697
GET 请求将转到 GET 方法,而 POST 请求将转到 POST 方法。问题是,如果我创建一个新用户,将不会有 ID:
http://examplecom/admin/edit-user/
然后我得到一个错误(解释):
Argument 2 passed to controller must be an instance of EditUserRequest, none given
所以现在我正在传递一个 0 的 ID 以使其能够用于创建新用户,但是这个应用程序才刚刚开始,所以我是否必须在整个应用程序中都这样做?有没有更好的方法来传递验证方法和可选参数?任何智慧将不胜感激。
您可以颠倒参数的顺序,因此可选参数是结尾:
public function postEditUser(EditUserRequest $request, $user_id = null)
{
}
Laravel 然后将首先解析 EditUserRequest
,如果没有 user_id,则不再传递任何内容,因此默认值将生效。