'required|string|max:200', 'expire_day' => 'required|integer|min:1|max:365', 'minute' => 'required|integer|min:1|max:1440', 'rate' => 'required|numeric|min:0|max:100', 'content' => 'required|string', 'file' => 'nullable|array', 'type' => 'required|in:1,2,3', ]; } /** * Get custom messages for validator errors. */ public function messages(): array { return [ 'name.required' => __('validation.required', ['attribute' => __('study.name')]), 'name.max' => __('validation.max.string', ['attribute' => __('study.name'), 'max' => 200]), 'expire_day.required' => __('validation.required', ['attribute' => __('study.expire_day')]), 'expire_day.integer' => __('validation.integer', ['attribute' => __('study.expire_day')]), 'expire_day.min' => __('validation.min.numeric', ['attribute' => __('study.expire_day'), 'min' => 1]), 'expire_day.max' => __('validation.max.numeric', ['attribute' => __('study.expire_day'), 'max' => 365]), 'minute.required' => __('validation.required', ['attribute' => __('study.minute')]), 'minute.integer' => __('validation.integer', ['attribute' => __('study.minute')]), 'minute.min' => __('validation.min.numeric', ['attribute' => __('study.minute'), 'min' => 1]), 'minute.max' => __('validation.max.numeric', ['attribute' => __('study.minute'), 'max' => 1440]), 'rate.required' => __('validation.required', ['attribute' => __('study.rate')]), 'rate.numeric' => __('validation.numeric', ['attribute' => __('study.rate')]), 'rate.min' => __('validation.min.numeric', ['attribute' => __('study.rate'), 'min' => 0]), 'rate.max' => __('validation.max.numeric', ['attribute' => __('study.rate'), 'max' => 100]), 'content.required' => __('validation.required', ['attribute' => __('study.content')]), 'file.array' => __('validation.array', ['attribute' => __('study.file')]), 'type.required' => __('validation.required', ['attribute' => __('study.type')]), 'type.in' => __('validation.in', ['attribute' => __('study.type')]), ]; } /** * Configure the validator instance. */ public function withValidator($validator): void { $validator->after(function ($validator) { // 检查学习内容是否完整 if ($this->has('content') && empty(trim($this->input('content')))) { $validator->errors()->add('content', __('study.content_cannot_be_empty')); } // 检查通过率是否合理 if ($this->has('rate') && $this->input('rate') < 60) { $validator->errors()->add('rate', __('study.rate_too_low')); } }); } }