1

同様の質問がありますが、Symfony 2.0 に適用されると書かれているため、時代遅れかもしれません。Symfony2フォームイベントの説明?

以下のイベントは Symfony2 2.3 でサポートされています:

const PRE_SUBMIT = 'form.pre_bind';
const SUBMIT = 'form.bind';
const POST_SUBMIT = 'form.post_bind';
const PRE_SET_DATA = 'form.pre_set_data';
const POST_SET_DATA = 'form.post_set_data';

以下に示す Symfony の本の例では、これらのイベントはいつ発生しますか?

public function newAction(Request $request)
{
    // just setup a fresh $task object (remove the dummy data)
    $task = new Task();

    $form = $this->createFormBuilder($task)
        ->add('task', 'text')
        ->add('dueDate', 'date')
        ->add('save', 'submit')
        ->getForm();

    $form->handleRequest($request);

    if ($form->isValid()) {
        // perform some action, such as saving the task to the database

        return $this->redirect($this->generateUrl('task_success'));
    }

    // ...
}
4

1 に答える 1

5

リクエストが GET または POST の場合、メソッド$form->submit($data)を呼び出したとき、または呼び出したときにイベントがトリガー$form->handleRequest($request)されます (デフォルトでは) 。submit()イベントの順序は次のとおりです。

PRE_SET_DATA
POST_SET_DATA
PRE_SUBMIT
SUBMIT
POST_SUBMIT

メソッドをSymfony\Component\Form\Form調べて調べるとsubmit()、イベントがトリガーされる場所がわかります。

于 2013-09-12T06:20:10.870 に答える