CakePHP: Diferenciar add o edit en beforeSave o afterSave

El código que implementemos en el método afterSave o en el beforeSave se ejecutará tanto a la hora de realizar un add o un edit. Puede ser necesario diferenciar cuando se está ejecutando una u otra acción.

Ha falta de otra opción, una manera bastante limpia de hacerlo es preguntado por la existencia o no del id en los datos recibidos por las callbacks.

if (empty($this->id)){
            // Añadiendo (no modificando)
}

Tags: , ,

CakePHP: Uso de beforeSave y afterSave

Es interesante y útil la existencia, en el modelo, de los métodos (callback) beforeSave y afterSave para manipular los datos antes o después de que vayan a ser grabados en la Base de Datos.

Un detalle muy importante a la hora de implementarlos en nuestros modelos es que debemos retornar un true o un false según el resultado del código de nuestra función.

function beforeSave(){
     // Código ...
     return true;
}

Mirando el código de la clase model, veo que sus métodos beforeSave y afterSave retornan un true por defecto. Ahora me pregunto si en caso de que queramos retornar un true en nuestra implementación, es más correcto retornar una llamada al método padre:

return parent::beforeSave();

De esta manera nos aseguramos que si algún día estos métodos en las clases padre tienen algo más implementado que un simple return true, ese código sea ejecutado. En caso de hacer este tipo de retorno, deberemos estar pendientes de futuras versiones de CakePHP, para ver si añaden nuevo código en estas funciones base.

Tags: , ,