0

0

Laravel 表单提交后重定向到指定页面的完整实现指南

霞舞

霞舞

发布时间:2026-02-26 08:37:02

|

188人浏览过

|

来源于php中文网

原创

Laravel 表单提交后重定向到指定页面的完整实现指南

本文详解 laravel 中表单提交后正确跳转至目标页面(如首页)的方法,涵盖路由命名、控制器验证与重定向逻辑、blade 模板优化及常见错误规避,确保用户操作后获得清晰反馈。

本文详解 laravel表单提交后正确跳转至目标页面(如首页)的方法,涵盖路由命名、控制器验证与重定向逻辑、blade 模板优化及常见错误规避,确保用户操作后获得清晰反馈。

在 Laravel 应用中,表单提交后默认“原路返回”或报错中断,往往是因为路由未正确配置、重定向逻辑缺失或验证失败未妥善处理。要实现成功提交后稳定跳转至 /home(或其他页面)并携带成功提示,需从路由定义、视图渲染、控制器逻辑三方面协同优化。

✅ 正确做法:命名路由 + 验证前置 + 语义化重定向

1. 命名路由(推荐替代硬编码路径)

在 routes/web.php 中为资源路由或普通路由显式命名,避免硬写 /jisajili 或 /home:

// routes/web.php
Route::get('/jisajili', [RegistrationController::class, 'create'])->name('registration.create');
Route::post('/jisajili', [RegistrationController::class, 'store'])->name('registration.store');
Route::get('/home', function () {
    return view('home');
})->name('home');

? 优势:后续修改 URL 时无需遍历所有 Blade 文件;支持 IDE 跳转与自动补全。

2. Blade 表单使用 route() 辅助函数

将原始

元气AI Bot
元气AI Bot

猎豹推出的国产Clawdbot ,一键安装,免费使用

下载
替换为基于命名路由的动态生成:
<!-- resources/views/jisajili/jiunge.blade.php -->
<form action="{{ route('registration.store') }}" method="POST">
    @csrf
    <div class="card-panel z-depth-5">
        <h5 class="center red-text">Jiunge Nasi</h5>

        <div class="input-field">
            <i class="material-icons prefix">account_circle</i>
            <input type="text" name="username" value="{{ old('username') }}" class="validate">
            <label>Jina lako</label>
            @error('username') <span class="red-text">{{ $message }}</span> @enderror
        </div>

        <div class="input-field">
            <i class="material-icons prefix">phone</i>
            <input type="number" name="phone" value="{{ old('phone') }}" class="validate">
            <label>Nambari ya simu</label>
            @error('phone') <span class="red-text">{{ $message }}</span> @enderror
        </div>

        <!-- 其他字段同理... -->

        <input type="submit" value="Jiunge" class="btn col s12 red">
    </div>
</form>

✅ 关键改进:

  • 使用 {{ old('field') }} 保留表单回填数据;
  • 使用 @error 显示验证错误(需配合控制器 withErrors());
  • @csrf 已保留,确保 CSRF 安全。

3. 控制器:验证前置 + 创建模型 + 重定向带消息

修正原始控制器中的逻辑顺序问题(如先 save() 再验证)、语法错误($request-> input() 多余空格)、以及未处理验证失败场景:

<?php
// app/Http/Controllers/RegistrationController.php
namespace App\Http\Controllers;

use App\Models\Regist; // 推荐使用 PascalCase 模型名
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class RegistrationController extends Controller
{
    public function create()
    {
        return view('jisajili.jiunge');
    }

    public function store(Request $request)
    {
        // ✅ 第一步:集中验证(推荐使用 validate() 方法,自动重定向并携带错误)
        $validated = $request->validate([
            'username' => 'required|string|max:255|unique:regs,jina', // 假设表为 regs,字段为 jina
            'phone'    => 'required|string|size:10',
            'email'    => 'required|email|unique:regs,email',
            'password' => 'required|string|min:8|confirmed',
        ]);

        // ✅ 第二步:使用 create() 批量赋值(需在模型中设置 $fillable)
        $reg = Regist::create([
            'jina'        => $validated['username'],
            'simuNumber'  => $validated['phone'],
            'email'       => $validated['email'],
            'password'    => bcrypt($validated['password']),
        ]);

        // ✅ 第三步:成功重定向 + 闪存成功消息
        return redirect()
            ->route('home')
            ->with('success', 'Asante! Umejiunga kwa mafanikio.');
    }
}

? 模型注意事项(关键!)
确保 App\Models\Regist 中声明了可批量赋值字段:

// app/Models/Regist.php
protected $fillable = [
    'jina',
    'simuNumber',
    'email',
    'password',
];

4. 在目标页面显示闪存消息(如 home.blade.php)

@if (session('success'))
    <div class="green white-text center-align">{{ session('success') }}</div>
@endif

⚠️ 常见错误与避坑指南

  • 不要先保存再验证:数据库写入失败会导致部分数据残留且无法回滚;
  • 避免 redirect('home') 硬编码:应始终用 route('home') 保证路由解耦;
  • 勿忽略 old() 和 @error:否则用户提交失败后需重新填写全部字段;
  • bcrypt() 不应在模型中调用:密码哈希应放在控制器或模型的 booting 事件中,但 create() 方式已隐含安全处理;
  • 验证规则字段名必须与表单 name 一致(如 username ≠ name),否则 old() 和 @error 不生效。

✅ 总结

实现 Laravel 表单提交后精准重定向,核心在于:
? 路由命名化(->name())+ 模板动态引用(route());
? 验证前置执行($request->validate() 或 Validator::make());
? 模型批量创建(Model::create() + $fillable);
? 重定向携带语义化消息(with('key', 'value'));
? 视图层完善用户体验(old() 回填 + @error 提示 + session() 展示)。

遵循此模式,即可稳定、安全、可维护地完成表单跳转流程。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

335

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

288

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

645

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

382

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

131

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

81

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

70

2025.08.05

session失效的原因
session失效的原因

session失效的原因有会话超时、会话数量限制、会话完整性检查、服务器重启、浏览器或设备问题等等。详细介绍:1、会话超时:服务器为Session设置了一个默认的超时时间,当用户在一段时间内没有与服务器交互时,Session将自动失效;2、会话数量限制:服务器为每个用户的Session数量设置了一个限制,当用户创建的Session数量超过这个限制时,最新的会覆盖最早的等等。

331

2023.10.17

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

127

2026.02.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Laravel---API接口
Laravel---API接口

共7课时 | 0.6万人学习

PHP自制框架
PHP自制框架

共8课时 | 0.6万人学习

PHP面向对象基础课程(更新中)
PHP面向对象基础课程(更新中)

共12课时 | 0.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号