[ 'required', // phpcs:ignore Generic.CodeAnalysis.UnusedFunctionParameter.FoundBeforeLastUsed function ($attribute, $value, $fail) { if (!in_array($value, CivilityEnum::toValues())) { $fail(__('Veuillez choisir entre :values', [ 'values' => implode(',', CivilityEnum::toLabels()) ])); } } ], 'firstname' => 'required|min:2|max:255', 'lastname' => 'required|min:2|max:255', 'email' => 'required|email:rfc,dns,spoof|max:255', 'phone' => 'nullable|max:255|phone:' . implode(',', $this->isoCodes()), 'address' => 'required|string|max:255', 'postcode' => 'required|postal_code:' . implode(',', $this->isoCodes()), 'city' => 'required|string|max:255', 'subject' => 'required|string|max:255', 'message' => 'required|string|min:20|max:255', ]; } /** * Messages * * @return array */ public function messages() { return [ // phpcs:ignore Generic.Files.LineLength.TooLong 'phone.phone' => trans('Le champ :attribute est invalide, il accepte les numéros des pays suivants :countries.', [ 'countries' => implode(', ', array_keys($this->isoCodes())) ]), // phpcs:ignore Generic.Files.LineLength.TooLong 'postcode.postal_code' => trans('Le champ :attribute est invalide, il accepte les codes postaux des pays suivants :countries.', [ 'countries' => implode(', ', array_keys($this->isoCodes())) ]), ]; } /** * Get custom attributes for validator errors. * * @return array */ public function attributes(): array { return [ 'firstname' => trans('prénom'), 'lastname' => trans('nom'), 'email' => trans('email'), 'phone' => trans('téléphone'), 'address' => trans('adresse'), 'postcode' => trans('code postal'), 'city' => trans('ville'), 'subject' => trans('objet e la demande'), 'message' => trans('message'), ]; } /** * Countries for validation. * * @return array */ private function isoCodes(): array { return [ 'france' => 'FR', 'belgium' => 'BE', 'luxembourg' => 'LU', 'guadeloupe' => 'GP', 'martinique' => 'MQ', 'frenchGuiana' => 'GF', 'reunion' => 'RE', 'saintPierreAndMiquelon' => 'PM', 'mayotte' => 'YT', 'saintBarthelemy' => 'BL', 'saintMartinFrenchPart' => 'MF', 'wallisAndFutuna' => 'WF', 'frenchPolynesia' => 'PF', 'newCaledonia' => 'NC', ]; } }