laravel - 在laravel中采用不止一种方法路由
问题描述
所以,我正在做一个表格,我想从我的控制器中采用多个方法到 Laravel 8 中的同一条路线。
可能吗?因为我一直在搜索,但我看到的所有答案都是针对旧版本的,其中路由有点不同。
我试图像这样适应,但我发现我做错了:/
Route::post('/editProfile', [
'avatar' => [UserController::class, 'updateAvatar'],
'bgImage' => [UserController::class, 'updateBGImage'],
]);
在 UserController 我有:
class UserController extends Controller
{
//
public function profile(){
return view('profile', array('user' => Auth::user()));
}
public function updateAvatar(Request $request) {
//Handle the user upload of the avatar
if($request->hasFile('avatar')) {
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(300, 300)->save( public_path('uploads/avatars/' . $filename));
$user = Auth::user();
$user->avatar = $filename;
$user->save();
}
return view('profile', array('user' => Auth::user()));
}
public function editProfile(){
return view('editProfile', array('user' => Auth::user()));
}
public function updateBGImage(Request $request) {
//Handle the user upload of the avatar
if($request->hasFile('bgImage')) {
$bgImage = $request->file('bgImage');
$filename = time() . '.' . $bgImage->getClientOriginalExtension();
Image::make($bgImage)->resize(300, 300)->save( public_path('uploads/bgImages/' . $filename));
$user = User::find(auth()->user()->id);
$user->bgImage = $filename;
$user->save();
}
return view('profile', array('user' => Auth::user()));
}
}
解决方案
虽然有很多方法可以解决这个问题,但我认为最干净的方法可能只是设置不同的路由,而不是其他方法。
Route::post('/editProfileAvatar', [UserController::class, 'updateAvatar']);
Route::post('/editProfileBackground', [UserController::class, 'updateBGImage']);
或者,您可以在控制器中创建一个新方法来处理逻辑,例如:
路线
Route::post('/editProfile', [UserController::class, 'handleRequest']);
控制器
public function handleRequest(Request $request) {
//Handle the user upload of the avatar
if($request->hasFile('avatar')) {
return $this->updateAvatar($request);
}
//Handle the user upload of the background image
if($request->hasFile('bgImage')) {
return $this->updateBGImage($request);
}
}
对于第二个示例,您可以根据需要将 updateAvatar 和 updateBGImage 方法设为私有,
推荐阅读
- godot - 收到此错误“add_child:参数“p_child”为空”并且似乎无法追踪它
- python - 使用自定义方法修补方法时如何在测试中检索类属性?
- c# - Gridview中的JQuery如何在文本框在同一行更改时检查复选框
- sql - 如何在动态查询中使用整数变量
- memory-management - 将设备内存和内核分配的内存映射到同一个 vma
- sql - 雪花 SQL 中的 JSON 解析
- vb.net - Amazon Vendor Central - 如何创建散列工资单?
- reactjs - 使用 AND 和 OR 过滤选项 - Material UI DataGrid/XGrid
- python - 如何重置torch Sequential中的图层参数?
- javascript - JS WebSocket,与服务器建立连接时出现问题