Selector de tienda editable en nuestro componente form en Magento2

Puede darse el caso en el que querramos incluir un selector de tienda múltiple a través de nuestro componente UI de generación de formulario en Magento.

Esto será útil si queremos mostrar el registro en una u otra tienda.

Lo primero de todo es crear un nuevo campo texto llamado store_id en la tabla que deseamos incluirlo.

El siguiente paso es editar nuestro componente UI que se encarga de generar nuestro formulario e incluiremos un nuevo campo.  Nuestro componente UI estará en view/adminhtml/ui_component/

A continuación editaremos el ResourceModel de nuestra tabla (en mi caso noticias) y le indicaremos que nuestro campo store_id será serializable ya que nuestro select es múltiple. Reemplaza <vendor>, <module>,  el nombre de tabla y la primary key por los de tu tabla.

  • Magento 2.0.x trabaja con la función PHP serialize
  • Magento 2.2.x trabaja con la función PHP json (json_encode, json_decode)

Ya estamos guardando los datos serializados en el campo store_id de nuestra tabla, pero ahora necesitamos recuperarlos para marcarlos como seleccionados si hay coincidencias.

Para ello necesitamos modificar nuestro DataProvider que se encarga de recuperar los datos de nuestra tabla para nuestro componente Ui de formulario. 

Como veis hay que hace unserialize() de nuestros datos para que el componente UI puede leerlos correctamente.

Nuestro selector quedaría así:

En el caso que necesitemos mostrar este campo en nuestro componente UI listing, tendremos que incluir una nueva columna que lo indentifique.

Y Crearemos la clase que se encarga de mostrar el nombre de las tiendas en las que se mostrará dicho registro:

El resultado seria este:

Deja una respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.