Функция удаления CakePHP не работает - PullRequest
0 голосов
/ 10 июня 2010

Я просто взламываю торт cakePHP (v1.3.2). Я установил его на локальном сервере Wamp, кажется, работает нормально, кроме функции delete () не работает. Я точно следую их руководству по блогам, оно настолько простое, насколько это возможно, поэтому я не понимаю, почему это не работает.

Вот функция в моем классе PostsController:

function delete($id = NULL) {    
    $this->Post->delete($id);    
    $this->Session->setFlash('The post with id: '.$id.' has been deleted.'); 

    $this->redirect(array('action'=>'index')); 
} 

URL ссылки "Удалить" выглядит так http://localhost/posts/delete/id:1 (где идентификационный номер соответствует конкретному сообщению, очевидно). Он перенаправляет и устанавливает флэш-сообщение, однако в сообщении нет номера, в котором должен быть $ id, и сообщение не удаляется Кажется, что правильный идентификатор передается через URL, но я не думаю, что он входит в функцию.

Я не понимаю. Есть идеи ???

Ответы [ 4 ]

2 голосов
/ 10 июня 2010

Я бы попробовал http://localhost/posts/delete/1 .... По крайней мере, это была форма URL, которую я помню, когда работал в CakePHP. Но это было некоторое время назад ...

Ура, Джанлука.

1 голос
/ 10 июня 2010

Разобрался, URL сгенерирован неправильно. Это ошибка в учебнике CakePHP.

Вот как они предлагают создать ссылку для удаления сообщения:

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

Это должно быть:

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

Обратите внимание на разницу: идентификатор в параметре url должен быть не парой ключ => значение 'id' => $post['Post']['id'], а только значением $post['Post']['id'].

0 голосов
/ 18 июля 2012

У вас есть переопределение function beforeDelete() в модели?Если да, эта функция должна быть return true;

0 голосов
/ 11 июня 2010

Джанлука прав, параметр в функции соответствует переданным аргументам из URL.Например:

если у вас есть что-то вроде этого:

function my_action($param1=null, $param2=null){
    ...
}

Если ваш URL-адрес http://localhost/post/myaction/1/2, то в функции $ param1 = 1 и $ param2 = 2 вы можетепередать столько параметров, сколько вы хотите.

ссылки в стиле CakePHP должны быть такими, как вы указали:

<?php echo $html->link('Delete', array('action' => 'my_action', $param1, $param2)...);?>

Если вы хотите получить доступ к id: 1, вам нужно получить его от

$this->params['named']['id']

от контроллера.

HTH

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...