Laravel 8中如何在控制器的一个方法中调用同控制器的其他方法
Laravel 8 控制器同类内部方法调用方案
方案1:直接调用同类方法
同一控制器类下的 public 方法可以直接通过 $this 调用,代码示例如下:
class LeaderController extends Controller { public function index() { $person = Leader::all(); return view('show'); } public function store(Request $request) { // 先完成你的存储逻辑 Leader::create($request->validated()); // 直接调用index方法,返回index方法的响应结果 return $this->index(); } }
适用场景
仅适合需要复用index方法逻辑,且不需要变更当前请求路径的场景。该方式下浏览器地址栏仍会保留store方法的路由路径,用户刷新页面会重复触发store的提交逻辑。
方案2:路由重定向(更推荐表单提交场景)
如果是表单提交完成后需要跳转到列表页,更建议走标准的Post/Redirect/Get规范,重定向到index方法对应的路由,避免表单重复提交问题。
- 先给index方法定义路由别名(routes/web.php)
use App\Http\Controllers\LeaderController; Route::get('/leaders', [LeaderController::class, 'index'])->name('leaders.index');
- store方法中返回重定向响应
public function store(Request $request) { // 完成存储逻辑 Leader::create($request->validated()); // 重定向到index路由,浏览器地址栏会自动更新为/leaders路径 return redirect()->route('leaders.index'); }
内容的提问来源于stack exchange,提问作者Harith Riyadh
相关产品推荐
相关产品推荐

