check(); } public function rules(): array { return [ 'cmnd' => 'required|string|regex:/^\d{9}(\d{3})?$/', 'cmnd_before' => 'required|file|mimetypes:image/webp|mimes:webp|max:5120|dimensions:min_width=300,min_height=300,max_width=2000,max_height=2000', 'cmnd_after' => 'required|file|mimetypes:image/webp|mimes:webp|max:5120|dimensions:min_width=300,min_height=300,max_width=2000,max_height=2000', ]; } public function messages(): array { return [ 'cmnd.required' => 'Số CMT/CCCD là bắt buộc', 'cmnd.regex' => 'Số CMT/CCCD phải gồm 9 hoặc 12 chữ số', 'cmnd_before.required' => 'Ảnh mặt trước là bắt buộc', 'cmnd_before.mimetypes' => 'Ảnh mặt trước phải là ảnh WebP', 'cmnd_before.mimes' => 'Ảnh mặt trước phải là ảnh WebP', 'cmnd_before.max' => 'Ảnh mặt trước tối đa 5MB', 'cmnd_before.dimensions' => 'Ảnh mặt trước phải từ 300px đến 2000px mỗi cạnh', 'cmnd_after.required' => 'Ảnh mặt sau là bắt buộc', 'cmnd_after.mimetypes' => 'Ảnh mặt sau phải là ảnh WebP', 'cmnd_after.mimes' => 'Ảnh mặt sau phải là ảnh WebP', 'cmnd_after.max' => 'Ảnh mặt sau tối đa 5MB', 'cmnd_after.dimensions' => 'Ảnh mặt sau phải từ 300px đến 2000px mỗi cạnh', ]; } }