Exemple d'ajout de champs pour n'importe quelle partie du formulaire :
public function hookAdditionalCustomerFormFields($params) { $countries = Country::getCountries($this->context->language->id, true); $additionalFields = []; $fields = $params['fields']; foreach ($fields as $key => $f) { if ($key == 'lastname') { $selectedDefaultCountry = $this->context->country->id; $idCountryField = (new FormField) ->setName('id_country') ->setType('select') ->setLabel($this->l('Pays')) ->setRequired(true); $additionalFields[] = $idCountryField; foreach ($countries as $country) { $idCountryField->addAvailableValue( $country['id_country'], $country['name'] ); } $position = (int) array_search('lastname', array_keys($params['fields']), null) + 1; $result = array_merge( array_slice($params['fields'], 0, $position), $additionalFields, array_slice($params['fields'], $position +1) ); $params['fields'] = $result; } if ($key == 'email') { $additionalFields[] = (new FormField) ->setName('vat_number') ->setType('text') ->setLabel($this->l('N° TVA')) ->setMaxLength(12) ->setRequired(true) ->addConstraint('isVatNumber'); $position = (int) array_search('email', array_keys($params['fields']), null) + 1; $result = array_merge( array_slice($params['fields'], 0, $position), $additionalFields, array_slice($params['fields'], $position +1) ); $params['fields'] = $result; } } }
J'ai fait exprès une petite erreur pour que tu réfléchisses aussi 😉