2015年11月10日火曜日

CakePHP 3でデータの更新

CakePHP 3でデータの更新です。新規作成(insert)と更新(update)の違いは、エンティティーの状態の違いによるもの。

新規作成(insert)
$article = $this->Articles->newEntity();

更新(update)
$article = $this->Articles->get($id);

src/Controller/ArticlesController.php
public function edit($id = null)
{
  // $idからエンティティーを取得。データがなければ、NotFoundExceptionが投げられる。
  $article = $this->Articles->get($id);

  // POSTメソッドでアクセスされた場合
  if ($this->request->is(['post'])) {

    // POSTされたリクエストデータを、バリデーションして、エンティティーにマージ
    $this->Articles->patchEntity($article, $this->request->data);

    // 保存成功
    if ($this->Articles->save($article)) {
      $this->Flash->success(__('変更されました。'));

      // リダイレクト
      return $this->redirect(['action' => 'index']);
    }
    // 保存失敗
    $this->Flash->error(__('変更できませんでした。'));
  }

  $this->set('article', $article);
}

実際に設定してみたサイトがこちら

参考サイト
Blog Tutorial - Part 2 CakePHP Cookbook 3.x documentation)

0 件のコメント:

コメントを投稿