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 相关文章推荐
检查url链接是否已经有参数的php代码 添加 ? 或 &amp;
Feb 09 PHP
php 输出双引号&quot;与单引号'的方法
May 09 PHP
php中使用preg_replace函数匹配图片并加上链接的方法
Feb 06 PHP
一些php项目中比较通用的php自建函数的详解
Jun 06 PHP
解析php中的escape函数
Jun 29 PHP
php统计文章排行示例
Mar 04 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
PHP实现支持SSL连接的SMTP邮件发送类
Mar 05 PHP
php实现根据词频生成tag云的方法
Apr 17 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
Laravel 手动开关 Eloquent 修改器的操作方法
Dec 30 PHP
PHP的imageTtfText()函数深入详解
Mar 03 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
yii2中添加验证码的实现方法
2016/01/09 PHP
浅谈PHP中的
2016/04/23 PHP
PHP获取数组中单列值的方法
2017/06/10 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
jQuery 使用手册(六)
2009/09/23 Javascript
prettify 代码高亮着色器google出品
2010/12/28 Javascript
在表单提交前进行验证的几种方式整理
2013/07/31 Javascript
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
JavaScript基本的输出和嵌入式写法教程
2015/10/20 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
JavaScript如何实现对数字保留两位小数一位自动补零
2015/12/18 Javascript
实例详解JavaScript获取链接参数的方法
2016/01/01 Javascript
AngularJS中的Directive自定义一个表格
2016/01/25 Javascript
快速掌握Node.js中setTimeout和setInterval的使用方法
2016/03/21 Javascript
AngularJS $injector 依赖注入详解
2016/09/14 Javascript
Angular表单验证实例详解
2016/10/20 Javascript
js实现兼容PC端和移动端滑块拖动选择数字效果
2017/02/16 Javascript
vue2 mint-ui loadmore实现下拉刷新,上拉更多功能
2018/03/21 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
[01:02:48]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Liquid
2018/04/03 DOTA
让 python 命令行也可以自动补全
2014/11/30 Python
python搭建微信公众平台
2016/02/09 Python
Python爬虫代理IP池实现方法
2017/01/05 Python
浅谈numpy数组的几种排序方式
2017/12/15 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
2018/04/02 Python
Python实现多属性排序的方法
2018/12/05 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
2019/08/06 Python
Python使用Slider组件实现调整曲线参数功能示例
2019/09/06 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
使用python3批量下载rbsp数据的示例代码
2019/12/20 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
JavaScript+Canvas实现自定义画板的示例代码
2019/05/13 HTML / CSS
Timberland美国官网:全球领先的户外品牌
2016/08/15 全球购物
平面设计自荐信
2013/10/07 职场文书
中文师范生自荐信
2014/01/30 职场文书