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 相关文章推荐
swfupload 多文件上传实现代码
Aug 27 PHP
Godaddy空间Zend Optimizer升级方法
May 10 PHP
Thinkphp模板中使用自定义函数的方法
Sep 23 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
Jun 18 PHP
php实现的简单日志写入函数
Mar 31 PHP
详解PHP的Yii框架中扩展的安装与使用
Apr 01 PHP
PHP的反射机制实例详解
Mar 29 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
Mar 31 PHP
php使用curl伪造来源ip和refer的方法示例
May 08 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
laravel框架如何设置公共头和公共尾
Oct 22 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
php下实现农历日历的代码
2007/03/07 PHP
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
2012/04/09 PHP
php+mysqli实现将数据库中一张表信息打印到表格里的方法
2015/01/28 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
绑定回车enter事件代码
2014/05/18 Javascript
浅谈javascript构造函数与实例化对象
2015/06/22 Javascript
JS实现的竖向折叠菜单代码
2015/10/21 Javascript
jQuery使用$.each遍历json数组的简单实现方法
2016/04/18 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
原生js编写基于面向对象的分页组件
2016/12/05 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
$.browser.msie 为空或不是对象问题的多种解决方法
2017/03/19 Javascript
js a标签点击事件
2017/03/30 Javascript
jQuery树插件zTree使用方法详解
2017/05/02 jQuery
详解webpack3如何正确引用并使用jQuery库
2017/08/26 jQuery
bootstrap treeview 扩展addNode方法动态添加子节点的方法
2017/11/21 Javascript
vue 中引用gojs绘制E-R图的方法示例
2018/08/24 Javascript
傻瓜式解读koa中间件处理模块koa-compose的使用
2018/10/30 Javascript
浅谈 Webpack 如何处理图片(开发、打包、优化)
2019/05/15 Javascript
浅析JavaScript预编译和暗示全局变量
2020/09/03 Javascript
python实现中文转换url编码的方法
2016/06/14 Python
python实现输出一个序列的所有子序列示例
2019/11/18 Python
利用HTML5中Geolocation获取地理位置调用Google Map API在Google Map上定位
2013/01/23 HTML / CSS
欧洲第一的摇滚和金属乐队服装网站:EMP
2017/10/26 全球购物
在线实验室测试:HealthLabs.com
2020/05/03 全球购物
小米官方旗舰店:Xiaomi
2020/08/07 全球购物
程序员跳槽必看面试题总结
2013/06/28 面试题
联谊活动策划书
2014/01/26 职场文书
维修工先进事迹
2014/05/29 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
2014年科室工作总结
2014/11/20 职场文书
2014城乡环境综合治理工作总结
2014/12/19 职场文书
2015年医院创卫工作总结
2015/04/22 职场文书