Что такое контекст формы в Symfony2 - PullRequest
4 голосов
/ 09 февраля 2011

Я начинаю работать с Symfony2 и пытаюсь понять компонент формы. Я смотрю на эту страницу http://docs.symfony -reloaded.org / guides / forms / Overview.html

И я могу понять, как мы создаем классы форм, но сбивает с толку то, как мы на самом деле используем эти формы в нашем контроллере.

$form = ContactForm::create($this->get('form.context'));

Есть ли у кого-нибудь более подробное объяснение части form.context этого кода и фактического процесса использования форм внутри контроллеров?

Спасибо.

1 Ответ

6 голосов
/ 12 февраля 2011
Сервис

form.context по умолчанию является объектом Symfony\Component\Form\FormContext. Вот полное определение этого сервиса:

    <service id="form.context" class="%form.context.class%">
        <argument type="collection">
            <argument key="validator" type="service" id="validator" />
            <argument key="validation_groups">%form.validation_groups%</argument>
            <argument key="field_factory" type="service" id="form.field_factory" />
            <argument key="csrf_protection">%form.csrf_protection.enabled%</argument>
            <argument key="csrf_field_name">%form.csrf_protection.field_name%</argument>
            <argument key="csrf_provider" type="service" id="form.csrf_provider" />
        </argument>
    </service>

На самом деле это очень простой объект, который просто подготавливает некоторые базовые параметры, используемые почти каждой формой, т.е. валидатор, CSRF защита и полевая фабрика.

Фактически код, который вы разместили, эквивалентен:

$form = new \Symfony\Components\Form\Form(null, array(
    'validator' => $this->get('validator'),
    'validation_groups' => ...
    ...
));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...