Laravel 如何用验证类验证 serializeArray () 后的数据呢
0

//比如前端是这样请求的
data = $("form").serializeArray();
            axios.put('{{route('users.update',[$user])}}', {data })
//后台接收的数据一般是这种格式的
data[
0:{name:name,value:xxx}
1:{name:email,value:xxx}
]

我在UserRequest验证类里面重写了validatinData方法

public function validationData()
    {
        $data = [];
        foreach($this->all() as $v){

            foreach($v as $v1){
                $data[$v1['name']]=$v1['value'];
            }
        }
        return $data;
    }

这样是可以正常验证数据了,但是还有个问题,在控制器中update的时候还需要重新走一遍validationData方法里面的循环来获取数据再更新,不然直接使用UserRequest $request的话数据格式还是原始接收的数据,求问各位大佬,除了在ajax中手动赋值参数外还有没有其他比较好的方法来处理这个问题

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

为什么我感觉你传递过来的是一个json格式的数据,我想能不能json_decode($request->all(),true),然后在进行验证呢。。。就不用重写这个方法了啊,用自带的验证规则就可以了

6天前

validation 不应该直接修改原数据。个人认为这个设计是不合理的。

6天前

@早起的虫子 请求进入控制器之前先走的FormRequest的吧,没地方转换的貌似,我改了下直接在ajax请求里赋值了,因为我这个验证类是根据不同场景验证不同字段的,所以我实在不想用make的方法手动验证,我在验证类里面添加了switch 根据不同路由返回不同的验证字段,这样控制器看着干净:joy:

public function rules(){
switch ($this->route()->getName()) {
            case 'users.editBasic':
                return [
                             'name'
                          ]
   }
}
6天前

@Wi1dcard 所以我直接ajax赋值了,后端看着干净,前端不管了。。。

6天前

  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 Emoji 自动补全来咯,可用的 Emoji 请见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!