首页 文章

请帮我在Cakephp 2.3.9的记录列表中获取记录的动态ID

提问于
浏览
2

我用bake来制作设置表的cms .

它包含三个字段 .

列类型Null默认id int(11)否
key varchar(10)没有
value 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']));
 }

我从控制器为 languages 变量分配了以下值 .

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

1 回答

  • 3

    在您的控制器中执行以下操作

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

相关问题