Laravel注册表单提交报错:POST方法不被支持问题求助
Laravel注册表单提交报错:POST方法不支持该路由
错误信息
The POST method is not supported for route register. Supported methods: GET, HEAD.
现有代码
路由(Routes)
Route::post('register', [RegisterContoller::class])->name('register');
视图(Views)
@extends('layout') @section('content') <div class="card"> <div class="card-header">Contact Form</div> <div class="card-body"> <form action="{{ route('register') }}" method="post"> {!! csrf_field() !!} <label>First Name</label> <input type="text" name="fname" id="fname" class="form-control"> </br> <label>Last Name</label> <input type="text" name="lname" id="lname" class="form-control"> </br> <label>Email</label> <input type="email" name="email" id="email" class="form-control"> </br> <label>Password</label> <input type="password" name="password" id="password" class="form-control"> </br> <input type="submit" value="Save" class="btn btn-success"> </form> </div> </div> @stop
控制器(Controller)
class RegisterContoller extends Controller { public function create() { return view('contact.create'); } public function store(Request $request) { $input = $request->all(); Register::Create($input); return view('contact.thanks'); } }
模型(Model)
class Register extends Model { protected $table = "register"; protected $primarykey = "id"; protected $fillable = ["fname","lname","email","password"]; use HasFactory; }
路由截图

解决方法
1. 修正路由定义
当前POST路由未指定处理方法,导致路由无法正确响应请求。修改为:
// 处理表单提交的POST路由 Route::post('register', [RegisterContoller::class, 'store'])->name('register'); // 显示注册表单的GET路由,避免命名冲突 Route::get('register', [RegisterContoller::class, 'create'])->name('register.form');
2. 修正控制器类名拼写(建议)
控制器类名RegisterContoller存在拼写错误,正确应为RegisterController,需确保类名与文件名一致,避免Laravel无法定位控制器。
3. 修正模型属性命名
模型中$primarykey不符合驼峰命名规范,Laravel默认期望$primaryKey,修改为:
protected $primaryKey = "id";
同时建议将use HasFactory;移至模型顶部,符合代码规范。
4. 清除路由缓存
执行以下命令清除路由缓存,确保新路由配置生效:
php artisan route:clear
内容的提问来源于stack exchange,提问作者abi jega
相关产品推荐
相关产品推荐

