それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

symfonyのフォームValidation機能をYAMLで定義する

YAMLの書き方を変えてみる。

Validationが失敗するのでYAMLの書式をTutorialの書式にしてみた。

tutorialではこういう形式になっていた validate/XXX.yml

methods:
  post:           [author, email, body]#フォームの要素
  get:            [author, email, body]#フォームの要素

fillin:
  enabled:       on #入力値を戻すかどうか

names:
  author:
    required:     Yes #必須
    required_msg: The name field cannot be left blank

  email:
    required:     No #任意
    validators:   emailValidator #emailValidatorでチェックする

  body:
    required:     Yes
    required_msg: The text field cannot be left blank

emailValidator:
  class:          sfEmailValidator #emailValidatorはsymfonyのモノを使う。
  param:
    email_error:  The email address is not valid.

でもって、エラーメッセージは prodとdevでは表示されるモノが違う。prodでは、メッセージだけ。devではValidateが失敗した箇所がメッセージに含めて表示される。


devとprodの表示の違いはハマリどころだ・・・コレまで何度もハマって来た。



泣き所

NEWするためのcreate アクションを呼び出したときやEditアクションを呼び出したとき、まだ送信される前からエラーメッセージが表示されるところだ。これはどうも出来ない。調べてみる。

追記

エラーメッセージは、入力値にエラーではなく、入力値が存在しないエラーだった。つまりYAMLの記述ミス。YAMLでフォームのINPUT名が間違っていると、Validationは当然入力エラーを返す。この辺はマジでハマリどころ。