web-dev-qa-db-ja.com

Symfony2フォームイベントの説明?

これは、githubのSymfony2リポジトリのFormEventsクラスです。メインの記事 フォームイベントを使用してフォームを動的に生成する方法 からリンクされています。

これらのイベントがフローで呼び出されたときに正確に誰かが知っていますか?

namespace Symfony\Component\Form;

/**
 * @author Bernhard Schussek <[email protected]>
 */
final class FormEvents
{
    const PRE_BIND = 'form.pre_bind';
    const POST_BIND = 'form.post_bind';
    const PRE_SET_DATA = 'form.pre_set_data';
    const POST_SET_DATA = 'form.post_set_data';
    const BIND_CLIENT_DATA = 'form.bind_client_data';
    const BIND_NORM_DATA = 'form.bind_norm_data';
    const SET_DATA = 'form.set_data';
}
26
Polmonino

イベントには2つのタイプがあります。

DataEvent -フォームデータへの読み取り専用アクセス。 「Pre」および「Post」イベントは読み取り専用です。

FilterDataEvent -フォームデータを変更できるようにするイベント。

form.pre_bindDataEventは、データがフォームにバインドされる前にトリガーされます。 Symfony\Component\Form\Form::bind()によってトリガーされます

form.post_bindDataEventは、データがフォームにバインドされた後にトリガーされます。 Symfony\Component\Form\Form::bind()によってトリガーされます

form.pre_set_dataDataEventは、フィールドがデフォルトのデータで埋められる前にトリガーされます。 Symfony\Component\Form\Form::setData()によってトリガーされます

form.post_set_dataDataEventは、フィールドがデフォルトのデータで埋められた後にトリガーされます。 Symfony\Component\Form\Form::setData()によってトリガーされます

form.bind_client_dataFilterDataEventは、データがフォームにバインドされる前にトリガーされます。 Symfony\Component\Form\Form::bind()によってトリガーされます

form.bind_norm_dataFilterDataEventデータが正規化された後にトリガーされます。 Symfony\Component\Form\Form::bind()によってトリガーされます。 _Symfony\Component\Form\Extension\Core\EventListener\FixUrlProtocolListener_を参照してください(例としてUrlTypeによって追加されます)

form.set_dataFilterDataEventは、デフォルトのデータがバインドされているときにトリガーされます。 Symfony\Component\Form\Form::setData()によってトリガーされます

これらのイベントがいつトリガーされるか、およびそれらをどのように使用できるかをよりよく理解するために、Formクラス自体をざっと見てみることをお勧めします。

66
xanido