如何在一个路由中使用 PUT 和 PATCH 请求创建另一个更新功能?
How to create another update function with PUT and PATCH request in one route?
我目前正在使用 laravel 5.0 开发一个项目。假设我的 route.php:
中有这样一条路线
Route::resource('user', 'UserController', ['except' => ['index', 'create', 'store', 'destroy']]);
Route::get('user/{user}/posts', 'UserController@indexUserPosts');
Route::get('user/{user}/changepassword', 'UserController@changePassword');
Route::put('user/{user}/changepassword', 'UserController@updatePassword');
Route::patch('user/{user}/changepassword', 'UserController@updatePassword');
如果我访问 http:// localhost:8000/user/{username}
它将触发 show 方法,如果我访问 http://localhost:8000/user/{username}/edit
它将触发编辑方法,该方法将给出 PUT
& PATCH
请求 http:// localhost:8000/user/{user}
。但是在这个阶段,用户只能编辑他们的个人信息,因为我想创建一个新的 editPassword
密码,它也给出了 PUT
& PATCH
请求。而且我不确定我上面写的路线是否正确。
所以,问题是如何根据laravel的约定在route.php文件中手动写入路由?
我是否应该再次向 http: //localhost:8000/user/{user}
发送 PUT
& PATCH
请求(我认为这会因来自 PUT
& PATCH
的请求而崩溃编辑功能)或者我应该将 PUT
& PATCH
请求发送到 http: //localhost:8000/user/{user}/changepassword
?
提前致谢。 :)
首先你不需要重复patch
函数。用put
就够了。第二件事是,每当你创建任何额外的 url 和用户资源时,你需要将它们放在资源路由之前,所以你的路由文件应该如下所示:
Route::get('user/{user}/posts', 'UserController@indexUserPosts');
Route::get('user/{user}/changepassword', 'UserController@changePassword');
Route::put('user/{user}/changepassword', 'UserController@update');
Route::resource('user', 'UserController', ['except' => ['index', 'create', 'store', 'destroy']]);
所以现在,当用户进入编辑页面时,他们将有 link 来编辑密码页面,当他们点击它时,他们将转到 GET user/{user}/changepassword
,当他们填写表格并点击更新他们会去 PUT user/{user}/changepassword'
我目前正在使用 laravel 5.0 开发一个项目。假设我的 route.php:
中有这样一条路线Route::resource('user', 'UserController', ['except' => ['index', 'create', 'store', 'destroy']]);
Route::get('user/{user}/posts', 'UserController@indexUserPosts');
Route::get('user/{user}/changepassword', 'UserController@changePassword');
Route::put('user/{user}/changepassword', 'UserController@updatePassword');
Route::patch('user/{user}/changepassword', 'UserController@updatePassword');
如果我访问 http:// localhost:8000/user/{username}
它将触发 show 方法,如果我访问 http://localhost:8000/user/{username}/edit
它将触发编辑方法,该方法将给出 PUT
& PATCH
请求 http:// localhost:8000/user/{user}
。但是在这个阶段,用户只能编辑他们的个人信息,因为我想创建一个新的 editPassword
密码,它也给出了 PUT
& PATCH
请求。而且我不确定我上面写的路线是否正确。
所以,问题是如何根据laravel的约定在route.php文件中手动写入路由?
我是否应该再次向 http: //localhost:8000/user/{user}
发送 PUT
& PATCH
请求(我认为这会因来自 PUT
& PATCH
的请求而崩溃编辑功能)或者我应该将 PUT
& PATCH
请求发送到 http: //localhost:8000/user/{user}/changepassword
?
提前致谢。 :)
首先你不需要重复patch
函数。用put
就够了。第二件事是,每当你创建任何额外的 url 和用户资源时,你需要将它们放在资源路由之前,所以你的路由文件应该如下所示:
Route::get('user/{user}/posts', 'UserController@indexUserPosts');
Route::get('user/{user}/changepassword', 'UserController@changePassword');
Route::put('user/{user}/changepassword', 'UserController@update');
Route::resource('user', 'UserController', ['except' => ['index', 'create', 'store', 'destroy']]);
所以现在,当用户进入编辑页面时,他们将有 link 来编辑密码页面,当他们点击它时,他们将转到 GET user/{user}/changepassword
,当他们填写表格并点击更新他们会去 PUT user/{user}/changepassword'