什么是Symfony2中的表单上下文

Mik*_*ike 4 symfony

我开始使用Symfony2,我正在尝试理解表单组件.我正在查看此页面http://docs.symfony-reloaded.org/guides/forms/overview.html

我可以理解我们如何创建表单类,但令人困惑的是我们如何在控制器中实际使用这些表单.

$form = ContactForm::create($this->get('form.context'));
Run Code Online (Sandbox Code Playgroud)

有没有人对此代码的form.context部分有更深入的解释,以及在控制器中使用表单的实际过程?

谢谢.

Cro*_*zin 6

form.contextservice是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>
Run Code Online (Sandbox Code Playgroud)

实际上,这是一个非常简单的对象,只是准备几乎每种形式使用的一些基本选项,即.验证者,CSRF保护和现场工厂.

事实上,您发布的代码相当于:

$form = new \Symfony\Components\Form\Form(null, array(
    'validator' => $this->get('validator'),
    'validation_groups' => ...
    ...
));
Run Code Online (Sandbox Code Playgroud)