Laravel 的表单验证 , 如何做到验证并改变 ( 转换 ) 数据 ?

$validator = Validator::make($request->all(), [
            // 如何在这里转换数据
            'id' => 'required|integer'
            'title' => 'required|unique:posts|max:255',
            'body' => 'required',
        ]);

需求是这样的,比如 , id 传来的是 5,虽然可以通过 Laravel 的 integer 验证 , 但是它其实是一个 string 类型 ,导致我后面如果不强转换为 int , 程序就会出错 。虽然我可以在后面自己强转化 , 但是这样是违背 Laravel 优雅原则的 , 我想在验证的同时就转换数据 。
所以有什么办法可以做到在验证的同时并且转换数据吗 ?谢谢大家了 。

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案

我已解决 。
但是,我找了好久找不到在验证的同时转换数据的,应该确实不能做到。
不过我想到了一种更好的方法 。
解决方法是使用中间件,请参考Laravel 的中间件 TrimStrings 和 ConvertEmptyStringsToNull 。
解决方法的思想是 :在中间件中,处理每一个参数,参数如果正是我们所要查找的,我们就可以对它做一些转换。

具体请看文章 :Laravel 的表单验证 , 如何做到验证并改变 ( 转换 ) 数据 ?( 使用中间件 )

6年前 评论
讨论数量: 1

我已解决 。
但是,我找了好久找不到在验证的同时转换数据的,应该确实不能做到。
不过我想到了一种更好的方法 。
解决方法是使用中间件,请参考Laravel 的中间件 TrimStrings 和 ConvertEmptyStringsToNull 。
解决方法的思想是 :在中间件中,处理每一个参数,参数如果正是我们所要查找的,我们就可以对它做一些转换。

具体请看文章 :Laravel 的表单验证 , 如何做到验证并改变 ( 转换 ) 数据 ?( 使用中间件 )

6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!