重要な場合とそうでない場合があるいくつかの10進数型の列を含む、さまざまなタイプのさまざまな列を持つDBテーブルがあります。データベースからレコードを読み取り、error_log を介して、serialize($dbArray) を使用して結果の連想配列を出力すると、列に NULL 値が含まれていることを示す「N」があることがはっきりとわかります。これと同じ配列が $form->populate($dbArray) で使用され、フォームに「入力」されます。送信時に、serialize($dbArray) で error_log を再度使用すると、問題の列にシリアル化出力の値部分として「S(1):0」が含まれるようになりました。
これは私にとって問題です。その特定の要素に値を入力しない場合に合格すると予想されるgreaterThan 0のバリデーターが失敗するためです。要素は必須要素ではなく、何かが入力されたときにのみバリデーターを実行する必要があり、NULL が返されないため実行されます。どこかで NULL 値が 0 に変換され、その後 DB で 0.00 になります。
要素に何も入力されていないときに Form が NULL を返すようにするために何をする必要があるか考えてみてください。この性質のほとんどの要素に使用するタイプ「テキスト」として定義された要素があります。NULL として返される同じ DB レコードからの varchars があり、NULL 値を保持している日付列も思い出すと思います。これらは、フォームの「テキスト」要素でもあります。
明日また戻ってきて、さらにデバッグしますが、何が原因なのかについてのアイデアをいただければ幸いです。