学習日記77日目 - Blogapp vol.13 -

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

どうも、enomotoです。
今日は短めに。
ということで今日も相変わらずテストをしていたのですが、
コメントフォームを通さずにURLに投稿内容を書き込んでいたら
投稿されてしまうバグを見つけてしまいました。
validateもymlで書いたんだけどなぁ…
getRequestParameterで受け取ってるから
$_GETも$_POSTもどっちも受け取れるからこうなるのか。
ということでこういう風に対処してみました。

続きを読む

学習日記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を作ってごまかしていた。

ドットが付いたURLも処理するようにしたい。


たとえば、http://blog.localhost/tag/namashibori.com/1
というようなURLの場合にfrontend_dev.phpでは問題ないのにfrontend.phpでは404エラーになってしまう。
調べてみたら解決方法があった。
資料:ルートにピリオドを含める - Do You PHP はてな
.htaccessを修正しなければならないようなので書いてあるとおりに修正したら直った。

escaping_strategyがbothになっている環境で部分的にエスケープを解除する。

settings.ymlでescaping_strategyをbothにすると変数が常にエスケープされて便利なんですが、
記事の表示の時にエスケープされたものも再度エスケープされてしまうので
「…」などの特殊文字が表示できなくなってしまう。
これは困った。
ということで表示部分でエスケープさせないようにしてみました。

続きを読む

学習日記75日目 - Blogapp vol.11 -

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

どうも、enomotoです。
今日はつけ麺を食べました。たまにはいいですね。
最近、昼飯がローテーションになっているので時には変化も楽しいものです。
ということで本日のメモはこちら

学習日記74日目 - Blogapp vol.10 -

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

どうも、enomotoです。
きょうは気づいたことを書いていきます。

気をつけたいこと

settings.ymlを編集するときはコメントアウトしてある部分を
コメントアウトを外して使うのではなくちゃんとまとめて書く。

all:
  .settings:
    escaping_strategy:      both
    enabled_modules:        [default, sfCryptoCaptcha]

#all:
#  .actions:

all:のコメントアウトを外すのを忘れて動作しなくていろいろ原因を探っていたらあっという間に時間が過ぎた。
こういう無駄な時間を過ごさないためにもできるだけ見やすく書く。