<?php namespace App\Http\Validators; use App\Model\SupplierChannelModel; use Validator; class SupplierAttachmentValidator { //保存相关的验证,别问我为什么不用laravel自带的form-request类 //因为控制器那边已经被之前的人魔改的难用的一比,而且控制器那边还接收了一大堆统一变量 public function checkSave($request) { //整理下请求数据 $attachment = $request->all(); $rules = [ 'field_name' => 'required', 'validity_type' => 'required', 'file_url' => 'required', 'file_name' => 'required', ]; $messages = $this->messages(); $validator = Validator::make($attachment, $rules, $messages); if ($attachment['validity_type'] == 2 && !$attachment['validity_period']) { return '附件有效期为自定义的时候,时间区间必须选择'; } $supplierGroup = SupplierChannelModel::where('supplier_id', $attachment['supplier_id']) ->value('supplier_group'); //供应商为混合分销商的时候,代理证的有效期必填 if ($supplierGroup == SupplierChannelModel::SUPPLIER_GROUP_MIX && !$attachment['validity_period'] && $attachment['field_name']=='proxy_certificate') { return '供应商为混合分销商的时候,代理证的必须为自定义且必填'; } if ($validator->fails()) { return $validator->errors()->first(); } } private function messages() { return [ 'field_name.required' => '附件类型 不能为空', 'validity.required' => '有效期类型 不能为空', 'file_url.required' => '上传文件 不能为空', 'file_name.required' => '文件名 不能为空', ]; } }