2014-09-04 2 views
0

Я не могу удалить в моем BeforeSave() в новой версии торт, но он работает с earler LIBS (например, версия 2.2)Невозможно удалить строку из метода BeforeSave в CakePHP 2.4+

Кто-нибудь знает, как получить его работая снова без изменения Cake libs?

Код:

public function beforeSave($options = array()) { 

if(!empty($this->data['Attachment']['delete']) && (int) $this->data['Attachment']['delete'] === 1) { 
     if($this->deleteFromDb((int) $this->data['Attachment']['id'])) { 
      $this->data['Attachment'] = array(); 
      return true; 
     } else { 
      return false; 
     } 
    } 
    return true; 
} 



public function deleteFromDb($id) { 
    if ($this->delete($id)) { 
     return true; 
    } else { 
     return false; 
    } 
} 

Следующая строка возвращает ложь, но я не понимаю, почему:

if($this->deleteFromDb((int) $this->data['Attachment']['id'])) 

Если я заменить его на следующий он все еще возвращает ложь:

if($this->delete((int) $this->data['Attachment']['id'])) 

Если я получаю доступ к методу с контроллера, он возвращает true, например

$this->Model->deleteFromDb($id); 

Любая помощь вообще была бы замечательной.

ответ

0

У меня это разрешено. В новых библиотеках для торта вы не можете удалить из beforeSave(), поэтому я перевел его на следующий подходящий метод, в моем случае это было раньшеValidate().

Надеюсь, это поможет кому-то.

+0

У меня такая же проблема, но я думаю, что положить ее в 'beforeValidate' не совсем правильно, действительно ли я хочу удалить эти строки, даже если другие данные недействительны? –

 Смежные вопросы

  • Нет связанных вопросов^_^