d0001
d0001

Reputation: 2190

When are Symfony 2.3 form events fired?

There is a similar question but it might be outdated since it says it applies to Symfony 2.0. Description of Symfony2 form events?

The following events are supported in 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';

When are these events fired in the example shown below from Symfony's book?

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'));
    }

    // ...
}

Upvotes: 1

Views: 1800

Answers (1)

Ryan
Ryan

Reputation: 5016

The events are triggered when you call $form->submit($data) or in your case when you call $form->handleRequest($request) which will call (by default) the submit() method if the request is a GET or POST. The order of events is:

PRE_SET_DATA
POST_SET_DATA
PRE_SUBMIT
SUBMIT
POST_SUBMIT

If you look in Symfony\Component\Form\Form and examine the submit() method, you will see where the events are triggered.

Upvotes: 5

Related Questions