2015-10-19 8 views
6

Ich verwende input Eigenschaft @ApiDoc Annotation für die Angabe von Parametern meiner API, die Form Felder sind.Wie Format des Parameters in Nelmio eingeben ApiDocBundle

data_class des Formulars ist eine Entität, die eine Einschränkungsüberprüfung für Eigenschaften aufweist.

Ich erwarte, dass nelmio api doc das Parameterformat als Validierungsbedingungen der Entität angibt, aber das Format leer ist.

enter image description here

Wie kann ich Parameter Formate in nelmio ApiDocBundle angeben?


EDIT: vielleicht schreibe ich eine schlechte Frage.

wir Parser für input & output angeben können, wenn wir keine Parser für diese angeben, rufen sie alle Parser für input & output, dann werden alle Parser für UserType genannt werden.

nelmio hat einen Parser ValidationParser benannt, die ein Verfahren parseConstraint genannt haben, die format für die Eingabe & Ausgang gesetzt, aber diese Methode ist nicht für mein Dokument genannt, warum?

Antwort

2

Ich reiche eine Pull-Anfrage ein, die Validierungsmetadaten für format Property verwendet.

Sie können sehen, diese PRhere

0

Wie Sie sehen können here können Sie Filter in Annotation wie es Dokumentation Beispiel getan.

Hier Teil dieses Beispiels:

/** 
* This is the documentation description of your method, it will appear 
* on a specific pane. It will read all the text until the first 
* annotation. 
* 
* @ApiDoc(
* resource=true, 
* description="This is a description of your API method", 
* filters={ 
*  {"name"="a-filter", "dataType"="integer"}, 
*  {"name"="another-filter", "dataType"="string", "pattern"="(foo|bar) ASC|DESC"} 
* } 
*) 
*/ 
public function getAction() 
{ 
} 
+0

i keine Mangel Schreibfilter von Hand, ich meine Form als Eingabe verwenden und nelmio Form & Einheit Validierungen lesen und – ghanbari

5

Format Spalte ist nur für datetime, date und choice Typen.

Für datetime und date es repräsentiert das Datumsformat wie Y-m-d H:i:s und die Reihe von Entscheidungen für choice.

Ich habe keine Dokumentation darüber gefunden, also musste ich den Quellcode durchsehen. Dies ist FormTypeParser Klasse, der Ort, wo FormType tatsächlich geparst ist und und Sie können sehen, wie Formatfeld festgelegt ist.

In FormTypeParserTest Klasse können Sie sehen, wie man es benutzt. Übergeben Sie einfach den String-Parameter mit format Namen für einen der verfügbaren Typen und der Parser wird damit umgehen.

UPDATE: Sie sind Ihre Einschränkungen innerhalb Ihrer FormType Klasse zu definieren.

Zum Beispiel:

class TestType extends AbstractType 
{ 
    /** 
    * @Assert\Type("string") 
    * @Assert\Length(min="10", max="255") 
    * @Assert\Regex("/^[^<>]+$/i") 
    */ 
    private $title; 

    /** 
    * @Assert\Type("string") 
    * @Assert\Length(min="10", max="255") 
    * @Assert\Regex("/^[^<>]+$/i") 
    */ 
    private $content; 

    /** 
    * @Assert\Date() 
    */ 
    private $created; 

    public function getName() 
    { 
     return 'test'; 
    } 
} 

wird in analysiert werden:

enter image description here

ValidationParser in doParse() Methode findet alle in Ihrer FormType Klasse definiert Constraints und führt dann parseConstraint() Verfahren für jeden von ihnen .

Sie können auch FormTypeParser wie oben beschrieben verwenden. Zum Beispiel:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->add('created', 'date', array('label' => 'Created', 'format' => 'yyyy-MM-dd')) 
     ->add('color', 'choice', array('label' => 'Color', 'choices' => array('grey' => '#CCCCCC', 'red' => '#FF0000'))) 
     ->add('save', 'submit'); 
} 

wird analysiert, wie:

enter image description here

Hoffe, dass es jetzt hilft!

+0

für Parameter diejenigen, die als Format verwenden Sie bitte meine Frage sehen, aktualisieren i es – ghanbari

+0

@ghanbari aktualisiert die Antwort – chapay

+0

danke, es funktioniert, aber auf die erste Weise, erzwinge ich Force alle Entity-Eigenschaften in Formulartyp neu definieren ist nicht sinnvoll und in zweiter Weise kann ich nicht für andere Felder Format als Text angeben – ghanbari

Verwandte Themen