laravel表单认证$this->validate()的使用

发布时间:2022-09-06 19:20:53 阅读:872次

我们在用laravel开发时

碰到表单认证,如果是混合在一起的方式,程序员需要自己渲染页面的话

我们可以用$this->validate()

以下为controller

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class UserController extends Controller
{   
    // 显示添加用户页面
    public function index() {
        return view('user.index');
    }

    // 处理添加用户操作
    public function save(Request $request) {
        // 输出请求数据
        dump($request->all());
        // aravel 5.6 之前是不会自动移除 _token 验证字段的,需要手动移除
        dump($request->except(['_token']));

        // 表单数据后台验证
        // laravel 5.6 之后会返回一个 $input,$input 会将验证字段 _token 移除掉
        $input = $this->validate($request, [
            // 字段名 => 规则名(多规则用 | 隔开)
            'account' => 'required|between:2,6',
            // 确认密码的 confirmed 属性一定要写在原始密码上
            'pwd' => 'required|confirmed',
            'pwd_confirmation' => 'required',
            'email' => 'required|email'
        ], [
            // 字段名.规则名 => 错误语句
            'account.required' => '用户名不能为空',
            'account.between' => '用户名必须为2-6个字符',
            'pwd.required' => '密码不能为空',
            'pwd.confirmed' => '两次密码不一致',
            'email.required' => '邮箱不能为空',
            'email.email' => '邮箱格式不正确',
        ]);
        // 输出请求数据
        dump($input);
    }
}

然后修改view文件夹中blade文件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>新增用户</title>
</head>
<body>
  {{-- 如果有错误,就提示出来,模板中输出错误信息 --}}
  @if($errors->any())
    <ul>
      @foreach ($errors->all() as $error)
        <li>{{ $error }}</li>
      @endforeach
    </ul>
  @endif
  {{-- 提交到指定路由,通过别名获取到路由地址 --}}
  <form action="{{ route('user.adduser') }}" method="post">
    @csrf
    {{-- 使用 old('account') 当页面重置的时候该字段会用上次提交的旧值继续展示,不会清空 --}}
    <div>用户账号:<input type="text" name="account" value="{{ old('account') }}"></div>
    <div>用户密码:<input type="password" name="pwd"></div>
    <div>确认密码:<input type="password" name="pwd_confirmation"></div>
    <div>用户邮箱:<input type="email" name="email" value="{{ old('email') }}"></div>
    <input style="margin-top: 5px;" type="submit" value="添加用户">
  </form>
</body>
</html>

会将所有的错误显示出来

如有问题,可以QQ搜索群1028468525加入群聊,欢迎一起研究技术

支付宝 微信

有疑问联系站长,请联系QQ:QQ咨询

转载请注明:laravel表单认证$this->validate()的使用 出自老鄢博客 | 欢迎分享