fields - find limit cakephp
¿Cómo puedo saber si estoy en BeforeSave de una edición o una creación? CakePHP (2)
Tengo un modelo en el que necesito hacer algo de procesamiento antes de guardar (o en algunos casos con una edición), pero generalmente no lo hago cuando simplemente estoy editando. De hecho, si realizo el procesamiento en la mayoría de las ediciones, el campo resultante será incorrecto. En este momento, estoy trabajando en la devolución de llamada beforeSave del modelo. ¿Cómo puedo saber si procedo de la edición o agregué?
Frank Luke
Esto es básicamente lo mismo que la respuesta de neilcrookes, excepto que estoy usando empty()
como prueba, a diferencia de !isset()
.
Si existe una clave de matriz, pero está vacía, entonces! Isset devolverá false, mientras que empty devolverá true.
Me gusta utilizar el mismo archivo de vista para agregar y editar, para mantener mi código SECO, lo que significa que al agregar un registro, la clave ''id'' seguirá configurada, pero no guardará nada. Cake maneja esto bien, excepto que la versión neilcrookes del código no lo reconocerá como un agregado, ya que la clave primaryKey se establece en la matriz de datos (aunque no contenga nada). Entonces, cambiando! Isset para vaciar las cuentas solo para ese caso.
function beforeSave() {
if (!$this->id && empty($this->data[$this->alias][$this->primaryKey])) {
// insert
} else {
// edit
}
return true;
}
function beforeSave() {
if (!$this->id && !isset($this->data[$this->alias][$this->primaryKey])) {
// insert
} else {
// edit
}
return true;
}