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 相关文章推荐
使用 php4 加速 web 传输
Oct 09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
Dec 31 PHP
php单件模式结合命令链模式使用说明
Sep 07 PHP
PHP多线程类及用法实例
Dec 03 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
Jan 28 PHP
Laravel 5框架学习之Eloquent (laravel 的ORM)
Apr 08 PHP
Thinkphp无限级分类代码
Nov 11 PHP
thinkphp验证码的实现(form、ajax实现验证)
Jul 28 PHP
PHP基于自定义函数实现的汉字转拼音功能实例
Sep 30 PHP
php处理多图上传压缩代码功能
Jun 13 PHP
PHP模糊查询技术实例分析【附源码下载】
Mar 07 PHP
PHP中localeconv()函数的用法
Mar 26 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
Apache启动报错No space left on device: AH00023该怎么解决
2015/10/16 PHP
老生常谈文本文件和二进制文件的区别
2017/02/27 PHP
Laravel5.1 框架数据库操作DB运行原生SQL的方法分析
2020/01/07 PHP
javascript实现存储hmtl字符串示例
2014/04/25 Javascript
jquery实现相册一下滑动两次的方法
2015/02/09 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
jQuery position() 函数详解以及jQuery中position函数的应用
2015/12/14 Javascript
Jquery和angularjs获取check框选中的值的方法汇总
2016/01/17 Javascript
javascript每日必学之多态
2016/02/23 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
2016/06/08 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
JS使用ActiveXObject实现用户提交表单时屏蔽敏感词功能
2017/06/20 Javascript
初识 Vue.js 中的 *.Vue文件
2017/11/22 Javascript
webpack配置导致字体图标无法显示的解决方法
2018/03/06 Javascript
Emberjs 通过 axios 下载文件的方法
2019/09/03 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
Python中模拟enum枚举类型的5种方法分享
2014/11/22 Python
详细讲解用Python发送SMTP邮件的教程
2015/04/29 Python
浅析Python中的for 循环
2016/06/09 Python
Python发送http请求解析返回json的实例
2018/03/26 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
python获取整个网页源码的方法
2020/08/03 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
HTML5 Plus 实现手机APP拍照或相册选择图片上传功能
2016/07/13 HTML / CSS
数据库测试通常都包括哪些方面
2015/11/30 面试题
遗体告别仪式答谢词
2014/01/23 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
2015年个人实习工作总结
2014/12/12 职场文书
2015高三毕业寄语赠言
2015/02/27 职场文书
七年级作文之英语老师
2019/10/28 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js