Jump to content

Select múltiple en el formulario de un componente


MarcoDev2022

Recommended Posts

Buenos días,

 

Estoy intentando implementar un select de tipo multiple dentro de la configuración de adminitración de de un componente.

Al incorporar el input en el form me aparece el siguiente mensaje de error y no soy capaz de capturar los datos en forma de array.

Mensaje de error: 

Notice en línea 806 en archivo /home/user/prestashop/var/cache/dev/smarty/compile/4f/bf/56/4fbf5663e90248675e7a6b2b0e8079df6a276981_0.file.form.tpl.php
[8] Undefined index: VAR_TYPE[]

Añado la manera en la que incorporo el input

array(
  'col' => 6,
  'type' => 'select',
  'multiple' => true,
  'prefix' => '<i class="icon icon-info-sign"></i>',
  'desc' => $this->l('Type'),
  'name' => 'VAR_TYPE', // he probado también con 'VAR_TYPE[]'
  'label' => $this->l('Type'),
  'options' => array(
  'query' => array(
  array(
  'id_option' => 'type1', 
  'name' => 'Type 1' 
  ),
  array(
  'id_option' => 'type2',
  'name' => 'Type 2'
  ),
  ),
  'id' => 'id_option', 
  'name' => 'name'
  ),
),

 

¿Alguien puede ayudarme con esto?

 

Prestashop: 1.7.8.7

Link to comment
Share on other sites

Ejemplo

 

                        [
                            'type' => 'select',
                            'label' => $this->trans('Estados de pedido', [], 'Modules.Tumodulo.Admin'),
                            'hint' => $this->trans('Estados de pedido seleccionados, [], 'Modules.Tumodulo.Admin'),
                            'name' => 'SELEC_MULTIPLE_ESTADOS[]',
                            'id' => 'customer-select',
                            'desc' => $this->trans('Seleccionar estados de pedido', [], 'Modules.Tumodulo.Admin'),
                            'class' => 'chosen',
                            'identifier' => 'name',
                            'multiple' => true,
                            'options' => [
                                'query' => OrderState::getOrderStates($this->context->language->id),
                                'id' => 'id_order_state',
                                'name' => 'name',
                            ],
                        ],

 

Link to comment
Share on other sites

Hola Ventura, gracias por tu respuesta.

He probado el ejemplo que me pasas y aparece el mismo error:

Notice en línea 806 en archivo /home/user/prestashop/var/cache/dev/smarty/compile/4f/bf/56/4fbf5663e90248675e7a6b2b0e8079df6a276981_0.file.form.tpl.php
[8] Undefined index: SELEC_MULTIPLE_ESTADOS[]

image.png.25191492421dce1a9e37368bb1674dde.png

Link to comment
Share on other sites

El select se está añadiendo dentro de un módulo, desde la clase principal del módulo.

Haciendo uso de estos métodos:

protected function renderForm(){
     ....
     $helper->generateForm(array($this->getConfigForm()));
}

....

protected function getConfigForm()
    {
        return array(
            'form' => array(
                'legend' => array(
                    'title' => $this->l('Settings'),
                    'icon' => 'icon-cogs',
                ),
                'input' => array(
                    [
                        'type' => 'select',
                        'label' => $this->trans('Estados de pedido', [], 'Modules.Tumodulo.Admin'),
                        'hint' => $this->trans('Estados de pedido seleccionados', [], 'Modules.Tumodulo.Admin'),
                        'name' => 'SELEC_MULTIPLE_ESTADOS[]',
                        'id' => 'customer-select',
                        'desc' => $this->trans('Seleccionar estados de pedido', [], 'Modules.Tumodulo.Admin'),
                        'class' => 'chosen',
                        'identifier' => 'name',
                        'multiple' => true,
                        'options' => [
                            'query' => OrderState::getOrderStates($this->context->language->id),
                            'id' => 'id_order_state',
                            'name' => 'name',
                        ],
                    ],
 .....                   

 

Link to comment
Share on other sites

Buenas Ventura,

 

He simplificado al máximo la creación del formulario:

/**
* Create the structure of your form.
*/
protected function getConfigForm()
{
    return array(
        'form' => array(
            'legend' => array(
                'title' => $this->l('Settings'),
                'icon' => 'icon-cogs',
            ),
            'input' => array(
                [
                    'type' => 'select',
                    'label' => $this->trans('Estados de pedido', [], 'Modules.Tumodulo.Admin'),
                    'hint' => $this->trans('Estados de pedido seleccionados', [], 'Modules.Tumodulo.Admin'),
                    'name' => 'SELEC_MULTIPLE_ESTADOS[]',
                    'id' => 'customer-select',
                    'desc' => $this->trans('Seleccionar estados de pedido', [], 'Modules.Tumodulo.Admin'),
                    'class' => 'chosen',
                    'identifier' => 'name',
                    'multiple' => true,
                    'options' => [
                        'query' => OrderState::getOrderStates($this->context->language->id),
                        'id' => 'id_order_state',
                        'name' => 'name',
                    ],
                ]
            ),
            'submit' => array(
                'title' => $this->l('Guardar'),
            ),
        ),
    );
}

El problema sigue apareciendo, ya no sé que más probar, porque esto no tiene sentido para mí

Link to comment
Share on other sites

No deja de ser un Notice y de un fichero del cache de desarrollo.

Si no te impide seguir avanzando en el desarrollo, puedes continuar avanzando.

Incluye el select en getConfigFieldsValues y en el postProcess para ver si te guarda y actualizada los registros correctamente

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...