Php 使用Laravel 5方法与其他参数一起注入
所以我正在开发一个管理界面。我有一条这样设置的路线:Php 使用Laravel 5方法与其他参数一起注入,php,controller,routes,laravel-5,Php,Controller,Routes,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, EditU
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
,如果没有用户id,则不再传递任何内容,因此默认值将生效。您可能应该为创建用户创建另一个方法。PUT应用于更新,而POST应用于创建so:putEditUser
和postCreateUser
如果颠倒顺序会怎么样postEditUser(EditUserRequest$request,$user_id=null)
@lukasgeiter-Huh,我想我已经试过了,但它就像一个符咒一样有效(颠倒顺序)。把它贴出来作为回答,我会接受的。另外,我使用的另一种方法是将user\u id作为隐藏字段传入,并且在POST方法上没有user\u id参数。