2012-03-24 4 views
1

Ich möchte Symfony FormFactory für die Handhabung von FormType und FormHandler verwenden.Symfony2: FormFactory welche Argumente?

Leider weiß ich nicht, welche Argumente benötigt werden, um den FormFactory-Dienst zu starten, ich habe in den Konstruktor der Form-Klasse geschaut, aber dort gab es eine Menge von Abhängigkeiten, die ich nicht wirklich bestellen kann.

<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> 

Also welche Argumente muss ich übergeben?

+0

Sind Ihre versuchen, die Form S2 Komponenten für sich außerhalb des S2-Framework zu verwenden? – Cerad

+0

In meinem Bundle mehrorless. Ich fand diese Service-Lösung in https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/config/profile.xml Glauben Sie, es ist genug, und Formtype FormHandler als Service zu definieren ?? Mit freundlichen Grüßen – bodokaiser

+0

Ich definiere FormTypes als Dienste. Sie funktionieren gut. Nie benötigt, um sich mit FormHandlers anzulegen. – Cerad

Antwort

2

CreateNamed Methode von FormFactory Klasse dauert FormType und Name der FormType jeweils.

Edit:

Eigentlich ist Name nicht auf FormType verwendet. Es kann ein beliebiger Name sein.

Serviceerklärung hinzugefügt.

<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> 
+0

Hallo, Ich habe diese Argumente, jetzt bin ich ein UncaughtException durch die FormFactory loc_article.form.type loc_article_form bodokaiser

+0

Sie haben den Formulartyp Aliasnamen. Siehe den bearbeiteten Kommentar. –

+0

Hallo, das macht Sinn, danke für die Lösung :) Grüße – bodokaiser

4

Für alle Benutzer - Ein Arbeitsbeispiel für 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} 
Verwandte Themen