美文网首页程序员
laravel表单构建

laravel表单构建

作者: 闲睡猫 | 来源:发表于2019-03-30 21:05 被阅读0次

    以构建用户注册表单resources/views/users/create.blade.php为例:

    <form method="POST" action="{{ route('users.store') }}">
    
        {{ csrf_field() }}
    
        @include('shared._errors')
    
        <div class="form-group">
            <label for="name">名称:</label>
            <input type="text" name="name" class="form-control" value="{{ old('name') }}">
        </div>
        <div class="form-group">
            <label for="email">邮箱:</label>
            <input type="text" name="email" class="form-control" value="{{ old('email') }}">
        </div>
        <div class="form-group">
            <label for="password">密码:</label>
            <input type="password" name="password" class="form-control" value="{{ old('password') }}">
        </div>
        <div class="form-group">
            <label for="password_confirmation">确认密码:</label>
            <input type="password" name="password_confirmation" class="form-control" value="{{ old('password_confirmation') }}">
        </div>
        <button type="submit" class="btn btn-primary">注册</button>
    </form>
    

    csrf验证

    表单中添加{{ csrf_field() }}函数生成:

    <input type="hidden" name="_token" value="fhcxqT67dNowMoWsAHGGPJOAWJn8x5R5ctSwZrAq">
    

    用于生成token防止 CSRF(跨站请求伪造)的攻击

    不加验证的情况下,提交表单会报419错误:

    419错误

    old全局函数

    Laravel 提供了全局辅助函数 old 来帮助我们在 Blade 模板中显示旧输入数据。这样当我们信息填写错误,页面进行重定向访问时,输入框将自动填写上最后一次输入过的数据

    表单规则验证

    表单数据提交到app/Http/Controllers/UsersController.phpstore方法

    public function store(Request $request)
    {
        $this->validate($request, [
            'name' => 'required|max:50',
            'email' => 'required|email|unique:users|max:255',
            'password' => 'required|confirmed|min:6'
        ]);
        # ...
    }
    

    规则验证语言包

    添加语言包 overtrue/laravel-lang

    $ composer require "overtrue/laravel-lang:~3.0"
    
    • config/app.phpIlluminate\Translation\TranslationServiceProvider::class, 替换为 Overtrue\LaravelLang\TranslationServiceProvider::class,

    • 修改 config/app.php 语言 'locale' => 'zh-CN',

    显示验证结果

    Laravel 默认会将所有的验证错误信息进行闪存。当检测到错误存在时,Laravel 会自动将这些错误消息绑定到视图上,因此我们可以在所有的视图上使用 errors 变量来显示错误信息。需要注意的是,在我们对 errors 进行使用时,要先使用 count($errors) 检查其值是否为空。

    创建错误信息视图 resources/views/shared/_errors.blade.php

    @if (count($errors) > 0)
      <div class="alert alert-danger">
          <ul>
              @foreach($errors->all() as $error)
                <li>{{ $error }}</li>
              @endforeach
          </ul>
      </div>
    @endif
    

    相关文章

      网友评论

        本文标题:laravel表单构建

        本文链接:https://www.haomeiwen.com/subject/zvzsbqtx.html