Jump to content

Edit History

4presta

4presta

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;
        }
    }
}

 

image.png.d1f35989d934e52cbf3688f7fef6297e.png

 

J'ai fait exprès une petite erreur pour que tu réfléchisses aussi 😉

4presta

4presta

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;
        }
    }
}

 

image.png.d1f35989d934e52cbf3688f7fef6297e.png

4presta

4presta

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;
        }
    }
}

 

×
×
  • Create New...