学習日記76日目 - Blogapp vol.12 -

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

どうも、enomotoです。
最近、もうやんに週3のペースで通っているのですがそろそろ自重したほうがいい気がしてきました。
本日はよくわからなかったことをメモしておこうと思います。

MySQLのlongvarcharには限界があるのか?

ブログを作っているのでどれぐらいの長文まで耐えられるのか気になったので
wikipediaから長文を持ってきて貼り付けてテストするとどうも途中で切れてしまう。
おかしいなぁと思って調べてみると65KB以上が表示されないみたいだ。
参考:symfonyにテーブルを作らせた方が嬉しい - それマグで!

Validationの動きの理解が曖昧だった。

validatorのymlを書いててvalidatorの結果がokならexecuteに流れるのは分かるけど
NGだった場合の流れが分かっていなかった。どうしてもわからなかったので聞いてみた。

以下は実際に書いたコード
  public function executeComment()
  {
    // 回答する
    $this->comment = new ArticleComment();
    $this->comment->setArticleId($this->getRequestParameter('article_id'));
    $this->comment->setCommentname($this->getRequestParameter('comment_name'));
    $this->comment->setCommentbody($this->getRequestParameter('comment_body'));
    $this->comment->setCommenthost($_SERVER['REMOTE_ADDR']);
    $this->comment->save();
    
    $this->redirect('@article?id='.$this->getRequestParameter('article_id'));;
  }

  public function handleErrorComment()
  {
    $this->getRequest()->setParameter('id',$this->getRequestParameter('article_id'));
    $this->forward('article','show');
  }

これはブログのコメントの処理をしている部分CommentAction。
Validationした結果が良ければ処理をするようになっています。
showからデータをcommentに送る→commentAction呼び出し→validator
→結果がOK→executeComment実行→redirectでshowに戻す
→結果がNG→handleErrorComment実行→idをParameterにセットしてフォワードする。

で、どこが分からなかったのか?

参考:http://symfony.xrea.jp/1.0/book/06-Inside-the-Controller-Layer.html#validation.and.errorhandling.methods
上記のサイトにバリデーションの流れが書かれているが、
この流れが分からなかったため、handleErrorXXXXを使うことも分からなかった。
なので、handleErrorXXXXが無いときはXXXXError.phpという
テンプレートを呼び出すことになっていることも分からず
エラーメッセージの通り、commentError.phpを作ってごまかしていた。