Laravel中如何将URL参数传递至控制器?
解决方案
修正路由定义
你路由代码里的->with('id', $id)是错误根源,这个方法用于给视图共享数据,并非路由参数传递。路由只需定义参数占位符,Laravel会自动将URL中的{id}传递给控制器方法。修正后的路由:Route::get('/edit/{id}', [RegistrationappController::class, 'edit']); // 若需命名路由(方便生成链接),可添加name方法 Route::get('/edit/{id}', [RegistrationappController::class, 'edit'])->name('edit');修正控制器方法
首先,return 123会终止方法执行,后续代码无法运行,测试完成后请删除。另外,with方法的参数存在语法错误,字符串引号未闭合。建议用findOrFail替代find,当找不到对应ID的记录时会自动返回404页面,避免后续逻辑出错。修正后的控制器代码:public function edit($id) { // 测试用的return 123可删除 // return 123; $registration = Registrationapp::findOrFail($id); // 修正with语法,或用compact更简洁 return view('edit')->with('registration', $registration); // 也可写成:return view('edit', compact('registration')); }生成邮件中的编辑链接
不要硬写URL,使用Laravel的route助手函数生成正确链接,适配不同环境(本地/生产):// 假设发送邮件时,$registration是用户的注册记录 $editUrl = route('edit', ['id' => $registration->id]); // 将$editUrl插入到邮件内容中即可
完成以上修改后,访问localhost/registrationapp/edit/5就能正常进入控制器方法,获取ID为5的注册记录并传递到edit视图。
内容的提问来源于stack exchange,提问作者illfamed
相关产品推荐
相关产品推荐

