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 相关文章推荐
不用iconv库的gb2312与utf-8的互换函数
Oct 09 PHP
一个阿拉伯数字转中文数字的函数
Oct 09 PHP
php牛逼的面试题分享
Jan 18 PHP
php5.3 注意事项说明
Jul 01 PHP
easyui的tabs update正确用法分享
Mar 21 PHP
php生成图片验证码
Jun 09 PHP
纯php生成随机密码
Oct 30 PHP
jquery不支持toggle()高(新)版本的问题解决
Sep 24 PHP
基于thinkPHP3.2实现微信接入及查询token值的方法
Apr 18 PHP
利用phpexcel对数据库数据的导入excel(excel筛选)、导出excel
Apr 27 PHP
详解php实现页面静态化原理
Jun 21 PHP
PHP设计模式之观察者模式定义与用法示例
Aug 04 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(2)――PHP类型
2010/02/15 PHP
php不写闭合标签的好处
2014/03/04 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
解析WordPress中的post_class与get_post_class函数
2016/01/04 PHP
php中的抽象方法和抽象类
2017/02/14 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
js导出table到excel同时兼容FF和IE示例
2013/09/03 Javascript
JS实现自动切换文字的导航效果代码
2015/08/27 Javascript
jquery+css实现动感的图片切换效果
2015/11/25 Javascript
jQuery Ajax 加载数据时异步显示加载动画
2016/08/01 Javascript
windows下vue-cli及webpack搭建安装环境
2017/04/25 Javascript
iframe与主框架跨域相互访问实现方法
2017/09/14 Javascript
ES6中Class类的静态方法实例小结
2017/10/28 Javascript
微信小程序版翻牌小游戏
2018/01/26 Javascript
js时间戳转yyyy-MM-dd HH-mm-ss工具类详解
2019/04/30 Javascript
JS实现点击发送验证码 xx秒后重新发送功能
2019/07/30 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
2020/03/17 Javascript
jQuery+Ajax+js实现请求json格式数据并渲染到html页面操作示例
2020/06/02 jQuery
在vue中使用console.log无效的解决
2020/08/09 Javascript
Python装饰器的函数式编程详解
2015/02/27 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Python 比较文本相似性的方法(difflib,Levenshtein)
2018/10/15 Python
Django框架模板介绍
2019/01/15 Python
Python Django中间件,中间件函数,全局异常处理操作示例
2019/11/08 Python
Tensorflow--取tensorf指定列的操作方式
2020/06/30 Python
css 元素选择器的简单实例
2016/05/23 HTML / CSS
Bluebella美国官网:英国性感内衣品牌
2018/10/04 全球购物
GE设备配件:GE Appliance Parts(家电零件、配件和滤水器)
2018/11/28 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
机械电子工程专业求职信
2014/06/22 职场文书
五一晚会主持词
2015/07/01 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
在校大学生才艺比赛策划书怎么写?
2019/08/26 职场文书