CakePHP 2.x: получение пустой страницы при загрузке поведения SoftDelete

Я хочу реализовать Soft Delete в своем проекте. Не удалось найти надежную рецензию на то же самое. Следующее - единственное, что я получил.

http://www.logicsart.com/cakephp/soft-delete-in-cakephp/

В любом случае, я добавил соответствующие столбцы в свою базу данных и попытался реализовать ее, добавив следующий код в свою модель приложения.

public function exists($id = null) {
    if ($this->Behaviors->attached('SoftDelete')) {
    return $this->existsAndNotDeleted($id);
    } else {
    return parent::exists($id);
    }
}

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;
}

Далее, в моем bootstrap.php

CakePlugin::loadAll();

И следуя моей модели,

public $actsAs = array('SoftDelete');

Я также включил SoftDeleteBehavior.php в папку app/Model/Behavour.

Проблема, с которой я сталкиваюсь, заключается в том, что когда я включаю $actsAs в свою модель, страница не отображает никаких данных, и если я ее исключаю, мягкое удаление не будет работать. Если у вас есть более конкретный источник для реализации мягкого удаления, это тоже поможет. Любая помощь будет оценена по достоинству. Спасибо!


person prats1411    schedule 11.12.2015    source источник


Ответы (1)


Прежде всего, проверьте опечатку в папке вашего поведения. Вы написали

/app/Model/Behavour 

когда это должно быть

/app/Model/Behavior

Далее, версия SoftDelete, которую вы используете, вероятно, устарела и может содержать ошибки, которые были исправлены в последних версиях.

Вы должны установить CakeDC/utils с композитором:

"require": {
    "cakedc/utils": "master"
}

CakePlugin::loadAll() требуется, когда вы выбираете установку в качестве плагина, но не требуется, если вы загружаете отдельный класс в папку app/Model/Behavior.

Также не забудьте создать два поля в таблице базы данных: deleted TINYINT(1) и deleted_date DATETIME.

Не забудьте включить отладку на сервере разработки, установив

Configure::write('debug', 2);

in app/Config/core.php.

person Inigo Flores    schedule 11.12.2015