Comportamiento de SoftDelete CakePHP - eliminar problemas

Estoy usando Soft Delete - Behavior del paquete utils de CakeDC.
(https://github.com/CakeDC/utils)

Ahora el problema es: quiero verificar en el controlador si algo fue suave (eliminado), como esto:

<?php
  if ($this->User->delete($id)) {
    $this->Session->setFlash(__('user has been deleted'));
  } else {
    $this->Session->setFlash(__('user has not been deleted'));
  }
 ?>

desafortunadamente estoy obteniendo mal los resultados. significa que si el usuario fue eliminado (suavemente) recibiré mensajes de 'el usuario no ha sido eliminado' y viceversa.

Sé cómo Cake maneja esta solicitud y el enlace beforeDelete debe devolver falso, para detener (fuertemente) la eliminación de los datos. pero refiriéndome a esto , el asunto de en github esto debería estar arreglado ahora. ¿Soy el único al que esto no le funciona?

¿Hay alguna otra solución para este problema, excepto simplemente negar la condición? (No quiero hacer eso, simplemente no está bien)

saludos y gracias de antemano!
nahri

preguntado el 22 de mayo de 12 a las 07:05

te puede interesar que comencé una discusión sobre este tema en groups.google.com/forum/?fromgroups#!topic/cakephp-core/… hace unos días. lamentablemente sin mucha respuesta hasta ahora... -

1 Respuestas

La solución que uso para esto es mitad copiada y mitad escrita del hilo al que @mark se vinculó.

Agregue esto a su AppModel

/**
 * Override the delete() model method so that we can account for the
 * SoftDelete behaviours return
 *
 * @param int $id
 * @param bool $cascade
 * @return bool
 */
    public function delete($id = null, $cascade = true) {
        $result = parent::delete($id, $cascade);
        if ($result === false && $this->Behaviors->enabled('SoftDelete')) {
            return $this->field('deleted', array('deleted' => 1));
        }
        return $result;
    }

Tenga en cuenta que este fragmento utiliza los comportamientos default ajustes. Por eso uso 'deleted' => 1 si ha nombrado su campo de manera diferente, entonces querrá cambiar esto.

contestado el 02 de mayo de 13 a las 09:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.