2

設定テーブルのcmsを作るのにbakeを使いました。

3 つのフィールドが含まれています。

カラム タイプ Null デフォルト id 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, __('よろしいですか# %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 ;
4

1 に答える 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'));
}
于 2013-11-13T00:52:05.080 に答える