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 组件化编程技巧
Jun 06 PHP
PHP 输出缓存详解
Jun 20 PHP
PHP生成唯一的促销/优惠/折扣码(附源码)
Dec 28 PHP
深入PHP异步执行的详解
Jun 03 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
PHP将HTML转换成文本的实现代码
Jan 21 PHP
php实现按天数、星期、月份查询的搜索框
May 02 PHP
Yii2创建控制器(createController)方法详解
Jul 23 PHP
php mysql实现mysql_select_db选择数据库
Dec 30 PHP
PHP实现表单提交数据的验证处理功能【防SQL注入和XSS攻击等】
Jul 21 PHP
PHP实现的猴王算法(猴子选大王)示例
Apr 30 PHP
PHPUnit测试私有属性和方法功能示例
Jun 12 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
用js进行url编码后用php反解以及用php实现js的escape功能函数总结
2010/02/08 PHP
对text数据类型不支持代码页转换 从: 1252 到: 936
2011/04/23 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
Yii使用ajax验证显示错误messagebox的解决方法
2014/12/03 PHP
PHP中JSON的应用技巧
2015/10/10 PHP
joomla数据库操作示例代码
2016/01/06 PHP
Zend Framework教程之Application用法实例详解
2016/03/14 PHP
PHP数据库操作三:redis用法分析
2017/08/16 PHP
Ubuntu 16.04中Laravel5.4升级到5.6的步骤
2018/12/07 PHP
PHP配合fiddler抓包抓取微信指数小程序数据的实现方法分析
2020/01/02 PHP
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
Javascript基于AJAX回调函数传递参数实例分析
2015/12/15 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
JS传递对象数组为参数给后端,后端获取的实例代码
2016/06/28 Javascript
JS自动生成动态HTML验证码页面
2017/06/14 Javascript
微信小程序实现的动态设置导航栏标题功能示例
2019/01/31 Javascript
webpack实践之DLLPlugin 和 DLLReferencePlugin的使用教程
2019/06/10 Javascript
js实现轮播图效果 z-index实现轮播图
2020/01/17 Javascript
在Vue.js中使用TypeScript的方法
2020/03/19 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python实现向QQ群成员自动发邮件的方法
2014/11/19 Python
在DigitalOcean的服务器上部署flaskblog应用
2015/12/19 Python
python基于隐马尔可夫模型实现中文拼音输入
2016/04/01 Python
用Python下载一个网页保存为本地的HTML文件实例
2018/05/21 Python
Python不使用int()函数把字符串转换为数字的方法
2018/07/09 Python
python实现QQ空间自动点赞功能
2019/04/09 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
NUK奶瓶美国官网:NUK美国
2016/09/26 全球购物
世界上最大的专业美容用品零售商:Sally Beauty
2017/07/02 全球购物
中专自我鉴定
2014/02/05 职场文书
民族学专业求职信
2014/07/28 职场文书
教师正风肃纪剖析材料
2014/10/20 职场文书
党员反对四风思想汇报范文
2014/10/25 职场文书
如何利用React实现图片识别App
2022/02/18 Javascript
剧场版《转生恶役只好拔除破灭旗标》公开最新视觉图 2023年上映
2022/04/02 日漫
vue 把二维或多维数组转一维数组
2022/04/24 Vue.js