PHP和Laravel(5):Laravel表单与验证

PHP和Laravel:Laravel表单与验证

在这里插入图片描述

Laravel表单基础

1. 创建表单视图

在Laravel中创建表单视图,通常涉及到HTML和Laravel的Blade模板引擎。表单用于收集用户输入,是Web应用中不可或缺的一部分。下面是一个简单的表单创建示例:

<!-- resources/views/forms/create.blade.php -->
@extends('layouts.app')

@section('content')
    <div class="container">
        <div class="row justify-content-center">
            <div class="col-md-8">
                <div class="card">
                    <div class="card-header">创建新用户</div>

                    <div class="card-body">
                        <form action="{
    { route('users.store') }}" method="POST">
                            @csrf
                            <div class="form-group">
                                <label for="name">姓名</label>
                                <input type="text" class="form-control" id="name" name="name" placeholder="请输入姓名">
                            </div>
                            <div class="form-group">
                                <label for="email">邮箱</label>
                                <input type="email" class="form-control" id="email" name="email" placeholder="请输入邮箱">
                            </div>
                            <div class="form-group">
                                <label for="password">密码</label>
                                <input type="password" class="form-control" id="password" name="password" placeholder="请输入密码">
                            </div>
                            <button type="submit" class="btn btn-primary">提交</button>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
@endsection

1.1 解释

  • 使用@extends指令来继承一个布局文件。
  • @section('content')@endsection用于定义布局中的内容部分。
  • { { route('users.store') }}使用Laravel的路由辅助函数来生成表单提交的URL。
  • @csrf指令插入一个CSRF令牌,用于防止跨站请求伪造攻击。
  • 表单字段使用标准的HTML标签,如<input><label>

2. 处理表单提交

处理表单提交通常在控制器中完成,涉及数据验证和业务逻辑的执行。下面是一个处理表单提交的控制器示例:

// app/Http/Controllers/UsersController.php
namespace App\Http\Controllers;

use App\Http\Requests\UserStoreRequest;
use App\Models\User;
use Illuminate\Http\Request;

class UsersController extends Controller
{
   
    public function store(UserStoreRequest $request)
    {
   
        $validated = $request->validated();
        User::create($validated);
        return redirect()->route('users.index')->with('success', '用户创建成功');
    }
}

2.1 解释

  • 控制器继承自Controller类。
  • store方法接收一个UserStoreRequest实例,这是一个表单请求对象。
  • $request->validated()方法返回经过验证的数据数组。
  • 使用User::create($validated)来创建一个新的用户实例,并保存到数据库。
  • 最后,使用redirect()->route()重定向到用户列表页面,并附带一个成功消息。

3. 表单请求对象

表单请求对象用于封装表单提交的逻辑,包括数据验证和授权。下面是一个表单请求对象的示例:

// app/Http/Requests/UserStoreRequest.php
namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class UserStoreRequest extends FormRequest
{
   
    public function authorize()
    {
   
        return true;
    }

    public function rules()
    {
   
        return [
            'name' => 'required|string|max:255',
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:8|confirmed',
        ];
    }
}

3.1 解释

  • 表单请求对象继承自FormRequest类。
  • authorize方法用于确定用户是否有权限执行请求,通常返回true
  • rules方法定义了表单字段的验证规则。
    • required:字段是必
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkchenjj

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值