UserType
extends AbstractType
in package
Formulaire de création et d'édition d'un utilisateur, côté administration.
Alimente l'entité User : nom, e-mail, pays, rôle (roles, choix unique restitué comme
tableau via un CallbackTransformer) et le numéro de téléphone. Le champ roles propose
ROLE_USER, ROLE_MANAGER, ROLE_OPERATOR et ROLE_SUPPORT, complété par ROLE_ADMIN
lorsque l'option is_admin vaut true. Le téléphone est saisi via le champ non mappé
phoneNumberInput (PhoneNumberType, indicatif + numéro, région par défaut GN) ; un listener
POST_SET_DATA le préremplit depuis phoneNumber à l'édition, et un listener PRE_SUBMIT
recompose phoneNumber (format +<indicatif> <numéro>) à partir de la saisie avant validation.
Les champs companyName, companyEmployeeCount, companyAddress, companyCity,
companyCountry, companyPhone, companyWebsite et companyEmail ne sont pas mappés
('mapped' => false) : ils ne servent qu'aux comptes ROLE_MANAGER et sont lus par le
contrôleur appelant (admin\UserController) pour construire et rattacher une entité Company
(setName(), setEmployeeCount(), setAddress(), setCity(), …). Le champ plainPassword
(répété, non mappé) est également lu par le contrôleur, qui le hache avant assignation. Le champ
profil_img (image de profil, JPEG/JPG/PNG, 1024 Ko maximum) n'est pas mappé non plus ; son
enregistrement est laissé au contrôleur.
Un listener PRE_SUBMIT porte des règles de validation conditionnelles au rôle : pour
ROLE_MANAGER, il rejette les domaines d'e-mail personnels (via App\Validator\Constraints\ BusinessEmail) et rend obligatoires companyName, companyAddress, companyCity,
companyCountry et companyEmployeeCount (celui-ci devant en outre être un nombre supérieur ou
égal à 2).
Options personnalisées attendues par configureOptions() : include_password (affiche le
champ plainPassword), password_required (le rend obligatoire) et is_admin (ajoute le choix
ROLE_ADMIN).
Table of Contents
Methods
- buildForm() : void
- configureOptions() : void
- normalizePhoneNumber() : string
Methods
buildForm()
public
buildForm(FormBuilderInterface $builder, array<string|int, mixed> $options) : void
Parameters
- $builder : FormBuilderInterface
- $options : array<string|int, mixed>
configureOptions()
public
configureOptions(OptionsResolver $resolver) : void
Parameters
- $resolver : OptionsResolver
normalizePhoneNumber()
private
normalizePhoneNumber(string $phoneNumber) : string
Parameters
- $phoneNumber : string