Symfony2:FormFactory哪个参数?

时间:2012-03-24 19:39:01

标签: forms service symfony factory

我想使用Symfony的FormFactory来处理FormType和FormHandler。

不幸的是,我不知道启动FormFactory服务需要什么参数,我查看了Form-Class的构造函数,但是在那里我无法真正订购所有依赖项。

    <service id="loc_article.form" factory-method="createNamed" factory-service="form.factory" class="Symfony\Component\Form\Form">
        <argument></argument>
        <argument></argument>
        <argument />
    </service>

    <service id="loc_article.form.type" class="LOC\ArticleBundle\Form\Type\ArticleFormType">
        <argument>LOC\ArticleBundle\Entity\Article</argument>
    </service>

    <service id="loc_article.form.handler" class="LOC\ArticleBundle\Form\Handler\ArticleFormHandler"  scope="request" >
        <argument type="service" id="loc_article.form" />
        <argument type="service" id="request" />
        <argument type="service" id="loc_article.manager" />
    </service>

那么我必须传递什么参数?

2 个答案:

答案 0 :(得分:4)

适用于所有位用户 - 2.4~的工作示例:

services:
  chocolate_factory.contact.form:
    class: Symfony\Component\Form\Form
    factory_method: createNamed
    factory_service: form.factory
    arguments: [form_name, form_name]

  chocolate_factory.contact.form.type:
    class: %anchorbrands_common.contact.form.type.class%
    arguments: [null]
    tags:
        - { name: form.type, alias: form_name}

答案 1 :(得分:2)

FormFactory类的

CreateNamed方法分别获取FormTypeFormType的名称。

修改

实际上名称与FormType无关。它可以是任意名称。

添加了服务声明。

<service id="loc_article.form" factory-method="createNamed" factory-service="form.factory" class="Symfony\Component\Form\Form">
    <argument>los_article_form</argument>
    <argument>los_article_form_name</argument>
    <argument />
</service>


<service id="loc_article.form.type" class="LOC\ArticleBundle\Form\Type\ArticleFormType">
    <tag name="form.type" alias="los_article_form" />
    <argument>LOC\ArticleBundle\Entity\Article</argument>
</service>