1

データベースに保存する前に、埋め込みフォーム フィールドを検証したいと考えています。現在、フォーム フィールドが空の場合、空の値がデータベースに保存されます。空のフィールドを許可していますが、フォーム フィールドが空の場合は何も挿入したくありません。

簡単な質問ですが、埋め込みフォーム フィールドを検証/保存する前にフィールド値を変更する方法を教えてください。

$this->form->getObject はアクションで機能しますが、$this->embeddedForm->getObject はオブジェクトが見つからないと言います

4

2 に答える 2

1

本当に簡単な解決策を見つけました。解決策は、フォームのモデル クラスの save() メソッドを手動でオーバーライドすることです。

class SomeUserClass extends myUser {

public function save(Doctrine_Connection $conn = null)
    {
        $this->setFirstName(trim($this->getFirstName()));
        if($this->getFirstName())
        {
                return parent::save();
        }else
        {
                return null;
        }
    }

}

この例では、firstname フィールドが空白かどうかを確認しています。そうでない場合は、フォームを保存します。空の場合、フォームで保存を呼び出しません。

バリデーターを適切に動作させることができませんでしたが、これは同様にクリーンなソリューションです。

于 2011-01-07T00:49:42.303 に答える
0

symfony は、フォーム/オブジェクトの保存プロセスへのフックを提供します。フォームの doSave() または processValues() 関数をオーバーライドすることにより、null 事前/事後検証で空白値を上書きできます。

ここで詳細を読むことができます: http://www.symfony-project.org/more-with-symfony/1_4/en/06-Advanced-Forms#chapter_06_ Saving_object_forms

于 2011-01-05T09:57:38.043 に答える