Symfony2: FormFactory, какие аргументы? - PullRequest
1 голос
/ 24 марта 2012

Я хочу использовать FormFactory Symfony для обработки 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 ]

4 голосов
/ 30 декабря 2013

Для всех пользователей - Рабочий пример для 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}
2 голосов
/ 25 марта 2012

CreateNamed метод класса FormFactory принимает FormType и имя FormType соответственно.

Edit:

На самом деле имя не имеет отношения к 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>
...