ACTION
BO
Desde 1.5
actionProductUpdate
~3 min de lectura
#Descripcion
Se ejecuta cuando un producto existente es actualizado en el back office. Se dispara despues de guardar los cambios del producto en la base de datos. Ideal para detectar cambios en productos ya existentes y reaccionar ante modificaciones de precio, stock, descripcion, etc.
Disparado por
-
AdminProductsController::processUpdate()— controllers/admin/AdminProductsController.php
#Parametros
| Nombre | Tipo | Requerido | Descripcion |
|---|---|---|---|
| $id_product | int | Si | ID del producto actualizado |
| $product | Product | Si | Objeto Product con los datos actualizados |
Retorno
void
Este hook no espera valor de retorno
#Ejemplo de codigo
mymodule.php
php
<?php
public function install()
{
return parent::install()
&& $this->registerHook('actionProductUpdate');
}
mymodule.php
php
<?php
/**
* Hook actionProductUpdate — producto actualizado
*/
public function hookActionProductUpdate(array $params)
{
$idProduct = (int) $params['id_product'];
/** @var Product $product */
$product = $params['product'];
// Ejemplo: Detectar cambio de precio y notificar a clientes con alerta
$oldPrice = (float) Db::getInstance()->getValue(
'SELECT price FROM `' . _DB_PREFIX_ . 'mymodule_price_history`
WHERE id_product = ' . $idProduct . '
ORDER BY date_add DESC LIMIT 1'
);
$newPrice = (float) $product->price;
// Guardar historial de precio
Db::getInstance()->insert('mymodule_price_history', [
'id_product' => $idProduct,
'price' => $newPrice,
'date_add' => date('Y-m-d H:i:s'),
]);
// Si el precio bajo, marcar para notificacion
if ($oldPrice > 0 && $newPrice < $oldPrice) {
$reduction = round((1 - $newPrice / $oldPrice) * 100, 1);
Db::getInstance()->insert('mymodule_price_alerts_queue', [
'id_product' => $idProduct,
'old_price' => $oldPrice,
'new_price' => $newPrice,
'reduction_pct'=> $reduction,
'processed' => 0,
'date_add' => date('Y-m-d H:i:s'),
]);
}
}
#Notas y gotchas
- ⚠️ Solo se dispara para productos que ya existen — para nuevos, usa `actionProductAdd`.
- ⚠️ El producto ya tiene los datos actualizados cuando se ejecuta este hook.
- ⚠️ Para capturar actualizaciones a nivel ORM (no solo desde el controlador admin), usa `actionObjectProductUpdateAfter`.
- ⚠️ En PS 1.7+ con el formulario Symfony, el orden de ejecucion de hooks puede variar respecto a 1.6.
- ⚠️ Si necesitas capturar tanto creaciones como actualizaciones, usa `actionProductSave`.
#Relacionados
#Historial de versiones
| Version PS | Cambio |
|---|---|
| 1.5 | Introducido |
| 1.7 | Compatible con Symfony. Sin cambios en parametros |
| 8.0 | Sin cambios. Compatible |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.