postValidatorããåå¥ã®ãã£ã¼ã«ãã«ã¨ã©ã¼ãè¨å®
å ã»ã©æ¸ããè¨äºã§ã¯postValidatorã«sfValidatorCallbackãæå®ãã¦ãè¤æ°ãã£ã¼ã«ãã«å¯¾ããããªãã¼ã·ã§ã³ãè¡ãã¨ãããã®ã§ããã
ããªãã¼ã·ã§ã³ã«å¤±æããã¨ãã©ã¼ã ã®å é¨ã«ä¿æãã¦ããsfValidatorErrorSchemaãªãã¸ã§ã¯ãã«å¤±æããåã ãã¨ã©ã¼ãªãã¸ã§ã¯ããæ ¼ç´ããã¾ãããã®ã¨ã©ã¼ãªãã¸ã§ã¯ãã¯ValidatorErrorSchemaãªãã¸ã§ã¯ãã®å é¨ã§2種é¡ã«åãã¦ä¿æããã¾ãã
1ã¤ã¯ NamedError ã§ããããã¯è¦ããã«åä¸ã®ãã£ã¼ã«ãã«å¯¾ããã¨ã©ã¼ã§ãã
ãã1ã¤ã¯ GlobalError ã§ããããã¯åä¸ã®ãã£ã¼ã«ãã§ã¯ãªããè¤æ°ãã£ã¼ã«ãã«ã¾ãããã¨ã©ã¼ã§ãã£ããããã©ã¼ã å ¨ä½ã¨ãã¦ã¿ãªãã¨ã©ã¼ã§ãã
postValidatorã«ã»ããããsfValidatorCallbackããsfValidatorErrorãthrowããã¨ãé常GlobalErrorã«æ ¼ç´ããã¾ããããã§GlobalErrorã§ã¯ãªãNamedErrorã«æ ¼ç´ãããå ´åãããã¨æãã¾ããããã®å ´åã©ã®ããã«ããã°NamedErrorã«å ¥ãããã«ãªããããç´¹ä»ãã¾ãã
ä¾ãã°ãã«ãã´ãªã¼ç¨ã®ã»ã¬ã¯ãããã¯ã¹[category_id]ããã£ãã¨ãã¦ãæ°è¦ä½æ(value='')ã鏿ããã¦ããå ´åãæ°è¦ã«ãã´ãªã¼åãå ¥åããã¤ã³ããããã£ã¼ã«ã[category_new]ãå¿ é ã«ãããã¨ãããã©ã¼ã ããã£ãã¨ãã¾ããã¨ããããããªãã¼ã·ã§ã³ãããããã以ä¸ã®ãããªã³ã¼ã«ããã¯ãè¨è¿°ãã¾ããã
<?php public function validateCategory(sfValidatorBase $validator, $values) { if (!$values['category_id']) { if (!strlen($values['category_new'])) { throw new sfValidatorError($validator, 'ã«ãã´ãªã¼åãå ¥åãã¦ãã ãã'); } } }
ããã§ã¨ã©ã¼ã¯åºãããã«ãªãã¾ããããããã§åºãã¨ã©ã¼ã category_new ã®ã¨ã©ã¼ã¨ãã¦è¨å®ãããã¨ãã¾ããããã§ç»å ´ããã®ãsfValidatorErrorSchemaã§ããæ¬¡ã®ããã«è¨è¿°ãããã¨ã§ãcategory_newã®ã¨ã©ã¼ã¨ãã¦è¨å®ãããã¨ãã§ãã¾ãã
<?php public function validateCategory(sfValidatorBase $validator, $values) { if (!$values['category_id']) { if (!strlen($values['category_new'])) { // sfValidatorErrorSchema ã§ã©ããã³ã° throw new sfValidatorErrorSchema($validator, array( 'category_new' => new sfValidatorError($validator, 'ã«ãã´ãªã¼åãå ¥åãã¦ãã ãã'), )); } } }
å ã»ã©ã¯åç´ã«sfValidatorErrorãthrowããã ãã§ããããããNameErrorã«ãããå ´åã¯ãsfValidatorErrorSchemaã¨ãããªãã¸ã§ã¯ãã§ã©ããã³ã°ãã¦ããããã¨ã§å¯è½ã«ãªãã¾ãã