Удаление записей базы данных из CakePHP НЕ РАБОТАЕТ - PullRequest
0 голосов
/ 15 апреля 2011

Вот мой код:

function admin_delete($id = null){
    $booking = $this->Booking->read(null, $id);
    if($this->Booking->delete($id)) {
        $this->Session->setFlash('Booking deleted');
        $this->redirect(array('action'=>'index'));
    }
}

, и это не похоже на работу.Я возился с этим целую вечность, пробуя другой код и т. Д., Также используя del (), но, похоже, ничего не работает.Ссылка на кнопку удаления идеальна (например, com / bookings/delete/id:23), но она просто пытается перейти к представлению admin_delete.ctp.которую я явно просил игнорировать перенаправлением.

Что я делаю не так?

моя ссылка для удаления в виде:

<?php echo $html->link('Delete', array('action'=>'admin_delete', 'id'=>$booking['Booking']['id']), null, 'Are you sure?');?>

HALP!

Ответы [ 2 ]

2 голосов
/ 15 апреля 2011

если вы используете административную маршрутизацию, вы не можете позвонить 'action'=>'admin_delete' напрямую, это 'action'=>'delete', 'admin' => true

1 голос
/ 15 апреля 2011

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

Router::connectNamed(array('id'));

Перепишите свою функцию admin_delete () для доступа к параметру id через массив именованных параметров:

function admin_delete(){
    if(isset($this->params['named']['id']) && $this->Booking->delete($this->params['named']['id'])) {
        $this->Session->setFlash('Booking deleted');
        $this->redirect(array('action'=>'index'));
        exit();
    }
}

В качестве альтернативы, если вы хотитеСохраняйте это простым и просто не используйте именованные параметры, вы можете просто обновить ссылку удаления, чтобы не использовать их.(удалить "'id' =>"):

<?php echo $html->link('Delete', array('action'=>'admin_delete', $booking['Booking']['id']), null, 'Are you sure?');?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...