|string> */ public function rules(): array { return [ 'name' => 'required|string', 'grade_id' => 'required|integer', 'subject_id' => 'required|integer', 'category_id' => 'required|integer', 'skill' => 'required|array', 'level' => 'required|integer', 'groups' => 'required' ]; } public function messages(): array { return [ 'name.required' => 'Vui lòng nhập tên bài.', 'grade_id.required' => 'Vui lòng nhập khối lớp.', 'subject_id.required' => 'Vui lòng nhập môn học.', 'category_id.required' => 'Vui lòng nhập danh mục', 'skill.required' => 'Vui lòng nhập tên kĩ năng.', 'level.required' => 'Vui lòng nhập trình độ.', 'groups.required' => 'Vui lòng nhập danh sách các nhóm câu hỏi.' ]; } protected function failedValidation(Validator $validator) { throw new HttpResponseException(response()->json([ 'success' => false, 'message' => 'Dữ liệu không hợp lệ', 'errors' => $validator->errors() ], 422)); } }