61 lines
2.1 KiB
PHP
61 lines
2.1 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' => 'required|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})?$/',
|
|
];
|
|
}
|
|
|
|
public function messages()
|
|
{
|
|
$messages = [
|
|
'type' => '请选择区域类别',
|
|
'name.required' => '请填写名称',
|
|
'name.max' => '名称不能超过100字',
|
|
'description.string' => '请正确填写介绍',
|
|
'person.required_if' => '请填写负责人名称',
|
|
'person.max' => '负责人名称不能超过100字',
|
|
'crops_ids.required' => '请选择农作物',
|
|
'crops_ids.min' => '至少选择一种农作物',
|
|
'areas.required' => '请填写面积',
|
|
'areas.regex' => '请正确填写面积',
|
|
'workforce.required' => '请填写人数',
|
|
'workforce.min' => '人数最小为0',
|
|
'address.string' => '请正确填写地址',
|
|
];
|
|
|
|
return $messages;
|
|
}
|
|
|
|
protected function failedValidation(Validator $validator)
|
|
{
|
|
$error = $validator->errors()->all();
|
|
throw new HttpResponseException(response()->json(['data' => [], 'code' => 400, 'message' => $error[0]]));
|
|
}
|
|
}
|