php – 将Laravel 5方法注入与其他参数一起使用

所以我正在开发一个管理界面.我有一条路线设置如下:

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则不再传递,因此默认值将启动.

上一篇:javascript – AngularJS – 使用UI-Router进行动态路由


下一篇:php – 使用参数创建[Laravel 5.2]