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+mysql写的留言本
Oct 09 PHP
Mysql和网页显示乱码解决方法集锦
Mar 27 PHP
.htaccess文件保护实例讲解
Feb 06 PHP
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
May 07 PHP
解析获取优酷视频真实下载地址的PHP源代码
Jun 26 PHP
PHP中多维数组的foreach遍历示例
Jun 13 PHP
php中mysql连接方式PDO使用详解
Feb 25 PHP
PHP针对字符串开头和结尾的判断方法
Jul 11 PHP
thinkPHP3.2.3实现阿里大于短信验证的方法
Jun 06 PHP
PHP实现打包zip并下载功能
Jun 12 PHP
Yii2框架实现登陆添加验证码功能示例
Jul 12 PHP
PHP code 验证码生成类定义和简单使用示例
May 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一些服务器端特性的配置加强php的安全
2006/10/09 PHP
PHP面向对象分析设计的经验原则
2008/09/20 PHP
php 无法载入mysql扩展
2010/03/12 PHP
php从完整文件路径中分离文件目录和文件名的方法
2015/03/13 PHP
基于php+MySql实现学生信息管理系统实例
2020/08/04 PHP
Javascript 类与静态类的实现(续)
2010/04/02 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
2012/02/03 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
javascript图片预加载完整实例
2015/12/10 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
JS函数的定义与调用方法推荐
2016/05/12 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
vue-router 源码实现前端路由的两种方式
2018/07/02 Javascript
详解Vue.js自定义tipOnce指令用法实例
2018/12/19 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
Vue项目实现换肤功能的一种方案分析
2019/08/28 Javascript
JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】
2020/04/28 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
python list转dict示例分享
2014/01/28 Python
Python实现字典排序、按照list中字典的某个key排序的方法示例
2018/12/18 Python
Python设计模式之外观模式实例详解
2019/01/17 Python
python 插入日期数据到Oracle实例
2020/03/02 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
Docker如何部署Python项目的实现详解
2020/10/26 Python
html5与css3小应用
2013/04/03 HTML / CSS
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
Java里面如何把一个Array数组转换成Collection, List
2013/07/26 面试题
经贸日语毕业生自荐信
2013/11/03 职场文书
机械专业应届生求职信
2013/12/12 职场文书
法学个人求职信范文
2014/01/27 职场文书
创建文明城市标语
2014/06/16 职场文书
高中生国庆节演讲稿范文2014
2014/09/21 职场文书
汽车销售员工作总结
2015/08/12 职场文书
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
MySQL count(*)统计总数问题汇总
2022/09/23 MySQL