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 相关文章推荐
Phpbean路由转发的php代码
Jan 10 PHP
PHP 执行系统外部命令 system() exec() passthru()
Aug 11 PHP
php的list()的一步操作给一组变量进行赋值的使用
May 18 PHP
PHP文件上传原理简单分析
May 29 PHP
色色整理的PHP面试题集锦
Mar 08 PHP
PHP imagecreatefrombmp 从BMP文件或URL新建一图像
Jul 16 PHP
PHP以指定字段为索引返回数据库所取的数据数组
Jun 30 PHP
9个实用的PHP代码片段分享
Jan 22 PHP
PHP保存带BOM文件的方法
Feb 12 PHP
php类自动装载、链式操作、魔术方法实现代码
Jul 23 PHP
php探针不显示内存解决方法
Sep 17 PHP
详解php反序列化
Jun 10 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设计模式之抽象工厂模式分析【星际争霸游戏案例】
2020/01/23 PHP
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
jquery 鼠标滑动显示详情应用示例
2014/01/24 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
angularjs在ng-repeat中使用ng-model遇到的问题
2016/01/21 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
Node.js利用debug模块打印出调试日志的方法
2017/04/25 Javascript
Vue学习笔记进阶篇之函数化组件解析
2017/07/21 Javascript
ionic 3.0+ 项目搭建运行环境的教程
2017/08/09 Javascript
vue debug 二种方法
2018/09/16 Javascript
原生JS与JQ获取元素的区别详解
2020/02/13 Javascript
vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据操作
2020/07/31 Javascript
python Django模板的使用方法(图文)
2013/11/04 Python
怎样使用Python脚本日志功能
2016/08/14 Python
python字符串str和字节数组相互转化方法
2017/03/18 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
python3实现点餐系统
2019/01/24 Python
自学python用什么系统好
2020/06/23 Python
python palywright库基本使用
2021/01/21 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
中国电子产品外贸网站:MiniIntheBox
2017/02/06 全球购物
美国排名第一的葡萄酒俱乐部:Firstleaf Wine Club
2020/01/02 全球购物
SHEIN美国:购买时髦的女性服装
2020/12/02 全球购物
用缩写的指针比较"if(p)" 检查空指针是否可靠?如果空指针的内部表达不是0会怎么样?
2014/01/05 面试题
SQL语言面试题
2013/08/27 面试题
户籍证明格式
2014/09/15 职场文书
2014年党务工作总结
2014/11/25 职场文书
学年个人总结范文
2015/03/05 职场文书
中学校园广播稿
2015/08/18 职场文书
大学生学习十八届五中全会精神心得体会
2016/01/05 职场文书
Python insert() / append() 用法 Leetcode实战演示
2021/03/31 Python
一文彻底理解js原生语法prototype,__proto__和constructor
2021/10/24 Javascript
Python matplotlib可视化之绘制韦恩图
2022/02/24 Python
Win11怎么跳过联网验机 ?Win11跳过联网验机激活教程
2022/04/05 数码科技
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS