Agregar nueva opción en ‘Acciones Agrupadas’ de Prestashop

Agregar nueva opción en ‘Acciones Agrupadas’ de Prestashop. En PrestaShop cuando se crea un AdminController
se crea una tabla con todos los registros, y sus respectivos filtros. Si desea obtener otras opciones se puede programar una opción en el menú dropdown
.
Agregar nueva opción en ‘Acciones Agrupadas’ de Prestashop
Si observamos un CRUD de productos o en algún modulo que estemos desarrollando en PrestaShop observaremos que posee opciones en una lista desplegable que hace referencia a la tabla y está por debajo de la tabla, en ‘Acciones agrupadas‘ vienen algunas acciones que aplica a todo lo seleccionado y/o filtrado.
Primer paso: Crear controlador
Podemos trabajarlo desde las opciones de PrestaShop o programarlo desde un módulo personalizado, en este ejemplo veremos de como estructurar y/o implementar en el controlador.
¿Es posible añadir una nueva acción a este dropdown>
?
La respuesta es un sí, solo tenemos que agregar un bulk_actions dentro de nuestro constructor
Editamos este fichero que contendrá nuestro controlador.
<?php
class AdminOrdersController extends AdminOrdersControllerCore
{
public function __construct()
{
parent::__construct();
}
}
Segundo paso.- Identificar el constructor
Una vez identificado el constructor debemos añadir nuestra modificación y la nueva action bulk, se recomienda añadir el bulk ya existente
Cambiaremos la función construct() por esta
public function __construct()
{
parent::__construct();
$this->bulk_actions = array(
'updateOrderStatus' => array('text' => $this->l('Change Order Status'), 'icon' => 'icon-refresh'),
'nueva_accion' => array('text' => 'Texto de la nueva accion', 'icon' => 'icon-refresh'),
);
}
Tercer paso: Añadir la función
Una vez se ha añadido la acción “nueva acción” deberemos añadir la función que llamara cuando seleccionemos esta acción en el controller
protected function processBulknueva_accion(){
//aqui tu codigo
//fin de codigo personalizado
}
Resumiendo, con otro ejemplo
Dentro del controlador, en el constructor. Basta con añadir:
$this->bulk_actions = array(
'report' => array(
'text' => $this->l('Descargar informe')
)
);
Donde report
es el nombre que recibirá la función enlazada.
Y creamos el siguiente método, que se ejecutara al hacer click en la nueva acción:
protected function processBulkReport()
{
// Con $this->boxes recogemos todo el array de elementos seleccionados.
}
Accederemos al controller que hemos modificado y veremos que ya tenemos nuestra nueva acción bulk
Conclusiones y recomendaciones
En este articulo hemos implementado opciones a la lista desplegable. Además, hemos creado una función para que esté vinculado a esa opción.
Por lo tanto, es esa función podemos darle las características necesarias para que la opción funcione según nuestras necesidades.