Ejecutar callbacks del modelo en función de acciones del controlador
Posted by faemino | Filed under CakePHP
Una de las cosas que me he encontrado al desarrollar con CakePHP es el poder ejectuar cierto código en las callbacks (afterSave, beforeSave, afterFind, etc.) del modelo en función de la acción realizada desde el controlador. Ciertamente no había pensado en la solución que plantea teknoid al respecto:
Generar una variable y un método en nuestro app_model:
var $controllerAction = null;
function setControllerAction( $action = null ) {
if($action) {
$this->controllerAction = $action;
}
}
Que después podemos utilizar en las callbacks de nuestros modelos:
function afterFind($results, $primary = false) {
if($this->controllerAction == 'test') {
// run some code such as $this->_reformatTestData($results);
}
}
Y desde los controladores para expecificar qué acción está realizando la llamada a la callback:
$this->User->setControllerAction('test');
$this->User->find('all');
Tags: callbacks, controladores, Modelos