学習日記78日目 - Blogapp vol.14 -

スタートアップ研修記はこちらです。

どうも、enomotoです。
そろそろ、8月です。8月怖い><
ということで、今日もはまったことを書きます。
相変わらずバリデータではまっています。
Admin Generatorで作ったBackendのブログ編集画面のバリデータが旨く動きませんでした。

表示自体はエラーメッセージが出るモノの
実際にはデータが保存されている…
なぜだろうと思ってAdmin Generatorが自動的に生成するautoArticleアクションを読んでやっと原因が分かりました。

autoArticleはこうなっていた。

  public function executeCreate()
  {
    return $this->forward('user', 'edit');
  }

  public function executeSave()
  {
    return $this->forward('user', 'edit');
  }

  public function executeEdit()
  {
    $this->user = $this->getUserOrCreate();

    if ($this->getRequest()->getMethod() == sfRequest::POST)
    {
      $this->updateUserFromRequest();

      $this->saveUser($this->user);

      $this->setFlash('notice', 'Your modifications have been saved');
(省略)

流れを読むとCreateもSaveもEditに飛ばされる。
で、

  1. updateUserFromRequestでセットして
  2. saveUserで保存する

という流れを取っていた。

で、自分がやっていたこと。

  • updateUserFromRequest内に保存をするようなコードを書いていた。

そりゃ、バリデーション無視するよなぁ。

問題点

  • 未だにバリデーションの理解があやふや。