Пожалуйста, помогите мне получить динамический идентификатор записи в списке записей в Cakephp 2.3.9
Я использовал bake для создания cms таблицы настроек.
Он содержит три поля.
Тип столбца Null
Идентификатор по умолчанию int(11) Нет
ключ varchar(10) Нет
значение varchar(200) Нет
И у него есть 3 записи.
Все функции создания работают нормально. Но удаление и редактирование будут редактировать/удалять только первую запись.
Для получения ссылки...
Я использовал следующий код в файле представления.
foreach ($languages as $language){ echo $this->Html->link(__('Edit'), array('action' => 'edit', $language['Language']['id'])); ?> echo $this->Form->postLink(__('Delete'), array('action' => 'delete', $language['Language']['id']), null, __('Are you sure you want to delete # %s?', $language['Language']['id'])); }
Я присвоил следующее значение языки переменная от контроллера.
$this->Language->recursive = 0; $this->set('languages', $this->paginate());
Схема:
CREATE TABLE IF NOT EXISTS languages (
id int(11) NOT NULL AUTO_INCREMENT,
title varchar(30) NOT NULL,
slug enum('eng','rus') NOT NULL DEFAULT 'eng',
symbol varchar(50) NOT NULL,
status enum('A','I','D') NOT NULL DEFAULT 'A',
created_dt timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
modified_dt datetime NOT NULL, PRIMARY KEY (id),
UNIQUE KEY Unique Language code (slug),
KEY status (status)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=7 ;
2
Author: joshua.paling, 2013-09-03
1 answers
В вашем контроллере выполните следующие действия
public function edit($id = null) {
if (!$id) {
throw new NotFoundException(__('Invalid Edit Id'));
}
$language = $this->Language->find('first', array(
'conditions' => array(
'Language.id' => $id,
),
));
if (empty($language)) {
throw new BadRequestException(__('Invalid Data'));
}
if ($this->request->is('post') || $this->request->is('put')) {
if ($this->Language->save($this->request->data()) {
$this->Session->setFlash(__('saved'));
} else {
$this->Session->setFlash(__('something went wrong'));
}
}
if (empty($this->request->data)) {
$this->request->data = $language;
}
}
public function delete($id = null) {
$this->Language->id = $id;
if (!$this->Language->exists()) {
throw new NotFoundException(__('Invalid Language'));
}
$this->request->onlyAllow('post', 'delete');
if ($this->Language->delete()) {
$this->Session->setFlash(__('Language deleted'));
$this->redirect(array('action' => 'index'));
}
$this->Session->setFlash(__('Language was not deleted'));
$this->redirect(array('action' => 'index'));
}
3
Author: Chris Pierce, 2013-11-13 00:52:05