laravel 如何修复路由POST不支持update_transaction方法,支持的方法:获取,头部

afdcj2ne  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(127)

我是Laravel的新手,我正在尝试编辑和删除用户事务,但我被这个错误卡住了:
路由POST不支持update_transaction方法。
支持的方法:得到,头。
这是我的EditTransferController

namespace App\Http\Controllers;
use App\Models\transfer;
use App\Models\User;
use App\Providers\RouteServiceProvider;
use Illuminate\Auth\Events\Registered;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Hash;
use Illuminate\Validation\Rules;
use Illuminate\Support\Str;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class EditTransferController extends Controller
{
   public function update_transaction(Request $request)
   {
      $id = $request->id;
      $transfer = Transfer::find($id);
      
      return view('Transfers_profile', ['transfer' => $transfer]);
   }

   public function delete_transaction(Request $request)
   {
      $transfer = $request->id;
      Transfer::find($transfer)->delete();
      return view('AllTransfers');
   }
}

这是routes/web.php

Route::get('/update_transaction', function (Request $request) { 
  $transfer = Transfer::find($request->id);
  return view('update_transaction', ['transfer' => $transfer]);
})->name('update_transaction');

Route::PUT('/transaction_profile', [EditTransferController::class, 'update_transaction'])->name('post_transaction_profile');
 
Route::post('/transaction_delete', [EditTransferController::class, 'delete_transaction'])->name('delete_transaction_profile');
bzzcjhmw

bzzcjhmw1#

您提供的代码似乎存在一些问题:
1.在routes/web.php文件中,update_transaction路由被定义为GET请求,但处理该请求的控制器方法需要PUT请求。要解决此问题,您应该将路由定义更改为:
路径::get('/更新事务/{id}',[编辑传输控制器::类,'更新事务'])-〉名称('更新事务');
1.在EditTransferController中,update_transaction方法希望在请求中传递id,但您没有从路由传递它。要解决此问题,您应该在调用路由时传递id,如下所示:
返回重定向()-〉路由('更新交易',['id' =〉$id]);

  1. delete_transaction路由被定义为POST请求,但应处理该请求的控制器方法需要DELETE请求。要解决此问题,应将路由定义更改为:
    路径::删除('/交易删除/{id}',[编辑传输控制器::类,'删除交易'])-〉名称('删除交易配置文件');
    1.在EditTransferController中,delete_transaction方法希望在请求中传递id,但您没有从路由传递它。要解决此问题,您应该在调用路由时传递id,如下所示:
    return redirect()-〉路由('delete_transaction_profile',['id' =〉$id]);
    1.在update_transaction方法中,您使用的是Transfer模型,但是在use语句中定义为transfer,所以您应该将Transfer改为transfer
    1.在delete_transaction方法中,您试图通过传递$request-〉id来删除一条记录,但它应该是$request-〉transfer。
    你应该在你的代码中改变上面提到的问题,它应该工作正常。

相关问题