(質問時間後より説明する言い換え)PropelのORMバージョン1.6.4 -understandingバリ
私は、スタンドアロン(非フレームワーク)の開発にPropel
setters
/validators
を理解する上で少しアドバイスを必要としています。検査状態に
バリデータは、あなたがそれをデータベースに永続化する前に入力を検証するのに役立ちます。
...そしてバリデータメッセージでは、ユーザがPropel
の検証に合格しないエントリを修正できる場所について一貫したアドバイスを提供することができます。
validator
の使用例は、読み取ります
$user = new User();
$user->setUsername("foo"); // only 3 in length, which is too short...
if ($objUser->validate()) {
...
私はこれを発見した問題である「何、それを検証するためではないsetXXX()
することができますか?」
私はカラムタイプがDATE
です。訪問者にウェブフォームで日付を入力するように依頼します。
Fatal error: Uncaught exception 'PropelException' with message 'Error parsing date/time value: '03/18/20q2' [wrapped: DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (03/18/aaa) at position 5 (/):
を:彼らは、しかし、これが最初に発生し、私は私のカスタムバリデータの一つが、バリデータメッセージを報告し、改正することがもう一度フォームをユーザーに返すことができるようになることを願っています日付の入力を間違えたと
03/18/20q2
を提出します - それができるようにするには意味がありません
$event= new Event();
$event->setDateStart($form_value_for_date); // where values is "03/18/20q2"
なぜそうなのか、私は理解して:私は(例えば)書いた後、私は発射する任意の単純またはCustomValidator
を得ることができなかった私のテストでは
作成して新しいものを操作しようとするたとえあなたがそれを保存する前であっても、あなたがそのフィールドに頼ることができなければ、オブジェクトです。
これは私を与えるジレンマがある:
致命的なエラーが無効な私のためにそれを扱うからPropel validation
を防止エントリ(したがって、ユーザー)、有用なメッセージを送り返すことに起因することができれば、私のようにPropel validation
を気にする必要があり私自身のセキュリティ/礼儀の検証と同様に?
Propel
に何らかの理由で - フィールドに期待されない値、またはそれを処理する方法を指定した場合、何が起こるかのドキュメント内の言及が見つかりません。
私はこれが意味を持ち、誰かが1つの場所で入力を検証する必要があることを意味する方法で私を指摘することができれば幸いです。私は一緒に私にできるようになりますラフな準備ができて解決策をハッキングしてきました