lcly-data-admin/app/Http/Requestes/AgriculturalBaseRequest.php

63 lines
2.2 KiB
PHP

<?php
namespace App\Http\Requestes;
use App\Enums\BaseType;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Validation\Rules\Enum;
class AgriculturalBaseRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'type' => ['required', new Enum(BaseType::class)],
'name' => 'required|string|max:100',
'description' => 'nullable|string',
'person' => 'required_if:type,1|string|max:100',
'crops_ids' => 'nullable|array|min:1',
'areas' => 'required|regex:/^\d+(\.\d{1,2})?$/',
'workforce' => 'required|integer|min:0',
'address' => 'nullable|string',
'address_lat' => 'nullable|regex:/^\d+(\.\d{1,10})?$/',
'address_lng' => 'nullable|regex:/^\d+(\.\d{1,10})?$/',
'parent_id' => 'required_if:type,1|integer|min:0',
'sort' => 'nullable|integer|min:0',
];
}
public function messages()
{
$messages = [
'type' => '请选择区域类别',
'name.required' => '请填写名称',
'name.max' => '名称不能超过100字',
'description.string' => '请正确填写介绍',
'person.required_if' => '请填写负责人名称',
'person.max' => '负责人名称不能超过100字',
'crops_ids.min' => '至少选择一种农作物',
'areas.required' => '请填写面积',
'areas.regex' => '请正确填写面积',
'workforce.required' => '请填写人数',
'workforce.min' => '人数最小为0',
'address.string' => '请正确填写地址',
'parent_id.required_if' => '请选择城镇',
];
return $messages;
}
protected function failedValidation(Validator $validator)
{
$error = $validator->errors()->all();
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
}
}