Jump to content

Recommended Posts

Buenos días,

 

estoy desarrollando un módulo en el que me interesaría detectar cuando se realizan cambios sobre un pedido, producto, cliente, etc.

 

Por ahora se me ocurren 2 vías:

 

- Solución rápida y más simple: Override de la clase Db.php, creando un evento para save, update, delete, etc.

- Solución estándar: crear un módulo que, a través de hooks, sobre-escriba aquellos métodos de escritura en BD y lance el trigger de una interface.

 

¿Alguno me propone alguna solución más que no tuviera alguna pega?

 

Saludos.

Link to comment
Share on other sites

La mejor solucion seria parte de la segunda que comentas, pero no tanto con archivos override, hay muchos hooks en estos metodos de update/save y add donde puedes evaluar la informacion que se esta gestionando y asi lanzar tu accion, por ejemplo para la accion de save/update existen los hooks

actionObjectUpdateBefore
actionObjectUpdateAfter
actionObject

Y para save

actionObjectAddBefore
actionObjectAddAfter
actionObject

Cabe aclarar que estos hooks son ejecutados unicamente cuando estas manipulando la base de datos con la clase ObjectModel, que es la forma nativa como PrestaShop gestiona en su mayoria la base de datos.

Link to comment
Share on other sites

Genial, ya lo he metido en el módulo y genial. Además de lo que me indicas, hay que registrarlo al instalarlo. Lo hice de la siguiente forma:

public function install()
	{
		if (!parent::install() ||
            !$this->registerHook('actionObjectAddressUpdateBefore')
            )
		{
			return false;
		}
		return true;
	}

/*
 ** Register address hook after update any address
 */
function hookActionObjectAddressUpdateAfter()
    {
        d("It works!");
    }

Gracias!

Link to comment
Share on other sites

Asi como lo tienes es correcto, solo te faltaria añadir el variable que te dara lo que se esta actualizando, para que analices su contenido y hagas tus acciones pertinentes, seria algo asi...

/*
 ** Register address hook after update any address
 */
function hookActionObjectAddressUpdateAfter($params)
{
    d($params);
}
Link to comment
Share on other sites

  • 4 weeks later...

@COTOKO, genial la solución. Genérica y muy simple. En mi caso, lo que hice fue avisarme para cuando alguien edita su dirección:

 

function hookActionObjectAddressUpdateBefore( $params )
{
    $this->executeRequest("address", "PUT", $params['object']);
}
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...