Laravel 5框架学习之表单验证


Posted in PHP onApril 08, 2015

在建立一个文章的时候,如果你什么都不输入直接提交,ok,你获得了一个空的文章,没有任何错误提示,这是不对的。在命令行下运行 php artisan 可以看到一个选项 make:request,新建一个form request类。在命令行执行

php artisan make:request CreateArticleRequest

生成的文件在 app/http/requests 目录下。在文件中我们可以看到两个方法:

public function authorize()
 {
 return false;
 }
 
 public function rules()
 {
 return [
  //
 ];
 }

authorize 表示用户在提交表单的时候是否需要是认证用户,我们不需要认证,返回 true。rules是我们的规则方法。让我们修改这个方法:

public function authorize()
 {
 //修改为 true,表示不需要认证,或者是通过认证
 return true;
 }
 
 public function rules()
 {
 return [
  'title' => 'required|min:3',
    'body' => 'required',
    'published_at' => 'required|date'
 ];
 }

其他的约束可以插看 laravel 的文档。上面的约束表示 title 是必须输入的,最少3个字符,body 是必须的,published_at 是必须的而且是日期。

在视图中,我们总是可以访问 $errors 变量来判断我们是否有错误,修改视图

@if ($errors->any())
    <ul class="alert alert-danger">
      @foreach($errors->all() as $error)
        <li>{{ $error }}</li>
      @endforeach
    </ul>
  @endif
  
  {{--使用我们添加的 illuminate\html 开源库--}}
  {!! Form::open(['url' => 'articles']) !!}

修改控制器,引入我们的 Request 类。

public function store(Requests\CreateArticleRequest $request) {
    Article::create($request->all());

    return redirect('articles');
  }

再次提交表单,什么都不填,可以看到错误信息。

修改提示信息变为中文

显示的是英文的错误信息,实际上laravel考虑到了国际化的问题,首先修改 config/app.php ,

 'locale' => 'zh',

将 locale 语言设置为中文,然后再 resources/lang 下面新建文件夹 zh, 拷贝 resources/lang/en/validation.php 文件到 zh 目录下,修改:

"min"         => [
 "numeric" => "The :attribute must be at least :min.",
 "file"  => "The :attribute must be at least :min kilobytes.",
 "string" => ":attribute 至少要包含 :min 字符。",
 "array"  => "The :attribute must have at least :min items.",
 ],
 
 "required"       => ":attribute 必须填写。",

其他的可以自行翻译。再次提交空表单,错误信息为中文了。而且 min:3 的判断也为最少3个中文。

--

laravel 也在控制器中集成了 validate 方法,换句话说,我们不一定要生成 request 类,这些工作我们可以直接在控制器中完成。

修改控制器:

//注意 Request 的命名空间,不要弄错了
  public function store(\Illuminate\Http\Request $request) {

    $this->validate($request, [
      'title' => 'required|min:3',
      'body' => 'required',
      'published_at' => 'required|date'
    ]);

    Article::create($request->all());

    return redirect('articles');
  }

结果相同,这样可以更快速的完成简单的验证。

以上所述就是本文给大家分享的全部内容了,希望能够对大家熟练掌握Laravel5框架有所帮助。

PHP 相关文章推荐
发布一个用PHP fsockopen写的HTTP下载的类
Feb 22 PHP
discuz程序的PHP加密函数原理分析
Aug 05 PHP
修改ThinkPHP缓存为Memcache的方法
Jun 25 PHP
PIGCMS 如何关闭聊天机器人
Feb 12 PHP
php简单实现多字节字符串翻转的方法
Mar 31 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
Dec 17 PHP
PHP连接MYSQL数据库实例代码
Jan 20 PHP
Symfony2中被遗弃的getRequest()方法分析
Mar 17 PHP
Yii2中事务的使用实例代码详解
Sep 07 PHP
php版微信自定义回复功能示例
Dec 05 PHP
php数组指针函数功能及用法示例
Feb 11 PHP
php中yar框架实例用法讲解
Dec 27 PHP
Laravel 5框架学习之日期,Mutator 和 Scope
Apr 08 #PHP
Laravel 5框架学习之表单
Apr 08 #PHP
Laravel 5框架学习之模型、控制器、视图基础流程
Apr 08 #PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 #PHP
Laravel 5框架学习之数据库迁移(Migrations)
Apr 08 #PHP
Laravel 5框架学习之环境与配置
Apr 08 #PHP
Laravel 5框架学习之Blade 简介
Apr 08 #PHP
You might like
PHP+JS无限级可伸缩菜单详解(简单易懂)
2007/01/02 PHP
CentOS6.5 编译安装lnmp环境
2014/12/21 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
10款PHP开源商城系统汇总介绍
2015/07/23 PHP
Prototype使用指南之dom.js
2007/01/10 Javascript
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
Javascript中使用parseInt函数需要注意的问题
2015/04/02 Javascript
js全选按钮的实现方法
2015/11/17 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
jQuery EasyUI基础教程之EasyUI常用组件(推荐)
2016/07/15 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
webpack将js打包后的map文件详解
2018/02/22 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
[00:36]我的中国心——Serenity vs Fnatic
2018/08/21 DOTA
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
Python下载指定页面上图片的方法
2016/05/12 Python
python实现下载整个ftp目录的方法
2017/01/17 Python
python 通过logging写入日志到文件和控制台的实例
2018/04/28 Python
pygame实现简易飞机大战
2018/09/11 Python
python 同时运行多个程序的实例
2019/01/07 Python
python+selenium 点击单选框-radio的实现方法
2019/09/03 Python
wxpython自定义下拉列表框过程图解
2020/02/14 Python
浅谈keras中的目标函数和优化函数MSE用法
2020/06/10 Python
python实现马丁策略的实例详解
2021/01/15 Python
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
介绍一下write命令
2014/08/10 面试题
Linux管理员面试题 Linux admin interview questions
2014/11/01 面试题
大学新生入学教育方案
2014/05/16 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书
辞职申请书范本
2019/05/20 职场文书
nginx限制并发连接请求数的方法
2021/04/01 Servers
vue组件冲突之引用另一个组件出现组件不显示的问题
2022/04/13 Vue.js
python 镜像环境搭建总结
2022/09/23 Python