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 auth_http类库进行身份效验
Mar 19 PHP
PHPUnit PHP测试框架安装方法
Mar 23 PHP
使用PHP求两个文件的相对路径
Jun 20 PHP
关于js与php互相传值的介绍
Jun 25 PHP
php解析url的三个示例
Jan 20 PHP
php中的mongodb select常用操作代码示例
Sep 06 PHP
php最简单的删除目录与文件实现方法
Nov 28 PHP
PHP5.5迭代生成器用法实例详解
Mar 16 PHP
深入理解PHP的远程多会话调试
Sep 21 PHP
阿里云的WindowsServer2016上部署php+apache
Jul 17 PHP
PHP数组常用函数实例小结
Aug 20 PHP
PHP实现网站应用微信登录功能详解
Apr 11 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类的使用 实例代码讲解
2009/12/28 PHP
PHP Streams(流)详细介绍及使用
2015/05/12 PHP
php微信开发之图片回复功能
2018/06/14 PHP
php探针不显示内存解决方法
2019/09/17 PHP
laravel-admin select框默认选中的方法
2019/10/03 PHP
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
仿校内登陆框,精美,给那些很厉害但是没有设计天才的程序员
2008/11/24 Javascript
js字符编码函数区别分析
2011/12/28 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
浅谈原生JS实现jQuery的animate()动画示例
2017/03/08 Javascript
详解webpack的proxyTable无效的解决方案
2018/06/15 Javascript
Next.js项目实战踩坑指南(笔记)
2018/11/29 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
微信小程序与公众号实现数据互通的方法
2019/07/25 Javascript
react中hook介绍以及使用教程
2020/12/11 Javascript
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
Python基础入门之seed()方法的使用
2015/05/15 Python
Python爬取国外天气预报网站的方法
2015/07/10 Python
Python学习小技巧之利用字典的默认行为
2017/05/20 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python数据分析库pandas基本操作方法
2018/04/08 Python
python3 下载网络图片代码实例
2019/08/27 Python
python统计函数库scipy.stats的用法解析
2020/02/25 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
python实现控制台输出颜色
2021/03/02 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
使用css3实现超炫的loading加载动画效果
2014/05/07 HTML / CSS
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
JPA的特点
2014/10/25 面试题
2014厂务公开实施方案
2014/02/17 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
工程部文员岗位职责
2015/02/04 职场文书
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python