我想使用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>
那么我必须传递什么参数?
答案 0 :(得分:4)
适用于所有yaml位用户 - symfony 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方法分别获取FormType
和FormType
的名称。
修改
实际上名称与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>