前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >laravel表单构建

laravel表单构建

作者头像
章鱼喵
发布2019-04-01 15:01:06
2K0
发布2019-04-01 15:01:06
举报
文章被收录于专栏:codingcoding

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

代码语言:javascript
复制
<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() }}函数生成:

代码语言:javascript
复制
<input type="hidden" name="_token" value="fhcxqT67dNowMoWsAHGGPJOAWJn8x5R5ctSwZrAq">

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

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

419错误

old全局函数

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

表单规则验证

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

代码语言:javascript
复制
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

代码语言:javascript
复制
$ 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

代码语言:javascript
复制
@if (count($errors) > 0)
  <div class="alert alert-danger">
      <ul>
          @foreach($errors->all() as $error)
            <li>{{ $error }}</li>
          @endforeach
      </ul>
  </div>
@endif
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.03.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • csrf验证
  • old全局函数
  • 表单规则验证
  • 规则验证语言包
  • 显示验证结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档