ACTION
BO
Desde 1.5
actionProductAdd
~3 min de lectura
#Descripcion
Se ejecuta cuando un nuevo producto es creado en el back office. Se dispara despues de que el producto se guarda por primera vez en la base de datos. Util para inicializar datos adicionales del modulo, crear registros asociados o sincronizar el nuevo producto con sistemas externos.
Disparado por
-
AdminProductsController::processAdd()— controllers/admin/AdminProductsController.php
#Parametros
| Nombre | Tipo | Requerido | Descripcion |
|---|---|---|---|
| $id_product | int | Si | ID del nuevo producto creado |
| $product | Product | Si | Objeto Product recien creado |
Retorno
void
Este hook no espera valor de retorno
#Ejemplo de codigo
mymodule.php
php
<?php
public function install()
{
return parent::install()
&& $this->registerHook('actionProductAdd');
}
mymodule.php
php
<?php
/**
* Hook actionProductAdd — nuevo producto creado
*/
public function hookActionProductAdd(array $params)
{
$idProduct = (int) $params['id_product'];
/** @var Product $product */
$product = $params['product'];
// Ejemplo: Inicializar configuracion del modulo para el nuevo producto
Db::getInstance()->insert('mymodule_product_config', [
'id_product' => $idProduct,
'auto_seo' => 1,
'sync_marketplace' => 0,
'ai_description' => 0,
'date_add' => date('Y-m-d H:i:s'),
]);
// Ejemplo: Asignar automaticamente a categoria por defecto del modulo
$defaultCategory = (int) Configuration::get('MYMODULE_DEFAULT_CATEGORY');
if ($defaultCategory > 0) {
$product->addToCategories([$defaultCategory]);
}
// Ejemplo: Registrar para generacion automatica de SEO
if (Configuration::get('MYMODULE_AUTO_SEO')) {
Db::getInstance()->insert('mymodule_seo_queue', [
'id_product' => $idProduct,
'type' => 'new_product',
'processed' => 0,
'date_add' => date('Y-m-d H:i:s'),
]);
}
}
#Notas y gotchas
- ⚠️ Solo se dispara para productos nuevos — para actualizaciones usa `actionProductUpdate`.
- ⚠️ El producto ya esta en BD con un ID valido cuando se ejecuta este hook.
- ⚠️ Para capturar la creacion a nivel ORM (incluyendo imports/API), usa `actionObjectProductAddAfter`.
- ⚠️ En PS 1.7+, puede dispararse en un contexto Symfony diferente al controlador clasico.
- ⚠️ Si necesitas capturar tanto creacion como actualizacion, usa `actionProductSave`.
#Relacionados
#Historial de versiones
| Version PS | Cambio |
|---|---|
| 1.5 | Introducido |
| 1.7 | Compatible con Symfony |
| 8.0 | Sin cambios. Compatible |
Descargar en Markdown
Pensado para pegar en ChatGPT, Claude u otra IA. Incluye solo el contenido de esta pagina.