所以我在管理界面上工作。我有这样设置的路线:
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/
然后我得到一个错误(解释):
传递给控制器的参数2必须是EditUserRequest的实例,没有给出
因此,现在我传递的ID为0,以使其可用于创建新用户,但是此应用程序才刚刚起步,所以我是否必须在整个应用程序中都这样做?有没有更好的方法来传递验证方法和参数(可选)?任何智慧将不胜感激。
您可以颠倒参数的顺序,因此可选参数之一是结束:
public function postEditUser(EditUserRequest $request, $user_id = null)
{
}
然后Laravel将解决第EditUserRequest
一个问题,如果没有user_id,则不再传递任何内容,因此将使用默认值。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句