Ejemplos callback

//Antes de guardar en la base de datos convierte la fecha de formato y al mail añade 'mailto:'
 public function beforeSave($options = array()) {
 if (isset($this->data['Autor']['fecha'])) {
 $this->data['Autor']['fecha'] = date("Y-m-d", strtotime($this->data['Autor']['fecha']));
 }
 if (isset($this->data['Autor']['mail'])) {
 $this->data['Autor']['mail'] = 'mailto:' . $this->data['Autor']['mail'];
 }
 }

//Después de recuperar los datos de la base de datos convierte la fecha de mysql a d/m/y y quita el 'mailto:' de los mails
 public function afterFind($results, $primary = false) {

 foreach ($results as $key => $val) {
 if (isset($results[$key]['Autor']['fecha'])) {
 $results[$key]['Autor']['fecha'] = date("d-m-Y", strtotime($results[$key]['Autor']['fecha']));
 }
 if (isset($results[$key]['Autor']['mail'])) {
 $results[$key]['Autor']['mail'] = str_replace('mailto:', '', $results[$key]['Autor']['mail']);
 }
 }
 return $results;
 }

//Filtra todos los resultados que no tengan el mail 'aaa.com'
 public function beforeFind($query) {
 $query['conditions']['Autor.mail LIKE'] = "%@aaa.com%";

 return $query;
 }

//Cuando añadimos un autor nuevo crea una carpeta con su id
 public function afterSave($created, $options = array()) {

 if ($created) {
 $dir = new Folder(WWW_ROOT . 'autores/' . $this->data['Autor']['id'], true);
 }
 }

//Impedimos que se borre el autor con id 3
 public function beforeDelete($cascade = true) {
 
 if ($this->id == 3) {
 return false;
 } else {
 return true;
 }
 }

//Cuando borramos un autor eliminamos su carpeta
 public function afterDelete(){
 $folder = new Folder();
 $folder->delete(WWW_ROOT . 'autores/' . $this->id);
 }

 

Publicado por

Avatar del usuario

Juan Pablo Fuentes

Formador de programación y bases de datos