4

私はSymfony2を使い始めており、フォームコンポーネントを理解しようとしています。私はこのページを見ていますhttp://docs.symfony-reloaded.org/guides/forms/overview.html

フォームクラスを作成する方法は理解できますが、紛らわしいのは、コントローラーでこれらのフォームを実際に使用する方法です。

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

このコードのform.context部分と、コントローラー内でフォームを使用する背後にある実際のプロセスについて、より詳細な説明を持っている人はいますか?

ありがとう。

4

1 に答える 1

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>

実際には、ほとんどすべてのフォームで使用されるいくつかの基本的なオプションを準備するだけの非常に単純なオブジェクトです。バリデーター、CSRF保護、フィールドファクトリー。

実際、投稿したコードは次のものと同等です。

$form = new \Symfony\Components\Form\Form(null, array(
    'validator' => $this->get('validator'),
    'validation_groups' => ...
    ...
));
于 2011-02-12T19:12:51.643 に答える