2015-10-19 4 views
6

में पैरामीटर का प्रारूप निर्दिष्ट करें, मैं input@ApiDoc एनोटेशन का उपयोग करता हूं जो मेरे एपीआई के पैरामीटर के विनिर्देशों के विनिर्देश के लिए एनोटेशन है।Nelmio ApiDocBundle

* @ApiDoc(
*  section="User", 
*  resource=true, 
*  input={ 
*   "class"="Nik\UserBundle\Form\UserType", 
*  }, 
*  .... 

फार्म के data_class एक इकाई की संपत्तियों के लिए बाधा मान्यता है कि है।

मुझे उम्मीद है कि nelmio api दस्तावेज़ इकाई के सत्यापन बाधाओं के रूप में पैरामीटर प्रारूप निर्दिष्ट करें, लेकिन प्रारूप खाली है।

enter image description here

कैसे मैं nelmio ApiDocBundle में पैरामीटर स्वरूपों निर्दिष्ट कर सकते हैं?


संपादित: शायद मैं एक बुरा प्रश्न लिखें।

हम अगर हम कोई इन के लिए पार्सर निर्दिष्ट करते हैं, input & output के लिए पारसर्स निर्दिष्ट कर सकते हैं, इसके लिए input & output सब पार्सर फोन, तो सभी पार्सर UserType के लिए कहा जाता है।

nelmio एक पार्सर ValidationParser एक विधि parseConstraint कि इनपुट & उत्पादन के लिए format निर्धारित करते हैं, नाम दिया है, जिसका नाम है, लेकिन इस विधि अपने दस्तावेज़ के लिए नहीं बुलाया जाता है, क्यों?

उत्तर

2

मैं एक पुल अनुरोध सबमिट करता हूं जो format संपत्ति के लिए सत्यापन मेटाडेटा का उपयोग करता है।

आप देख सकते हैं इस PRhere

0

जैसा कि आप here देख सकते हैं, आप इसे प्रलेखन उदाहरण जैसे एनोटेशन में फ़िल्टर निर्दिष्ट कर सकते हैं।

यहां इस उदाहरण का हिस्सा:

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

मैं हाथ से नहीं लिख फिल्टर, मैं इनपुट के रूप में मेरी फार्म का उपयोग होगा और फार्म और इकाई सत्यापन पढ़ सकते हैं और मानकों – ghanbari

5

स्वरूप स्तंभ केवल datetime, date और choice प्रकार के लिए बनाया गया है।

datetime और date के लिए यह Y-m-d H:i:s तरह दिनांक स्वरूप और choice के लिए विकल्पों की सरणी प्रतिनिधित्व करता है।

मुझे इसके बारे में कोई दस्तावेज नहीं मिला है, इसलिए मुझे स्रोत कोड देखना पड़ा। यह FormTypeParser वर्ग है, वह जगह जहां FormType वास्तव में पार्स किया गया है और आप देख सकते हैं कि प्रारूप फ़ील्ड कैसे सेट किया गया है।

FormTypeParserTest कक्षा में आप इसका उपयोग कैसे कर सकते हैं। बस उपलब्ध प्रकारों में से एक के लिए format नाम के साथ स्ट्रिंग पैरामीटर पास करें और पार्सर इसे संभाल लेंगे।

अद्यतन: आप अपनी FormType कक्षा के अंदर अपनी बाधाओं को परिभाषित करना चाहते हैं।

उदाहरण के लिए:

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'; 
    } 
} 

में पार्स किए जाएंगे:

enter image description here

ValidationParser doParse() विधि में सभी बाधाओं अपने FormType वर्ग में परिभाषित पाता है और फिर उनमें से प्रत्येक के लिए parseConstraint() विधि कार्यान्वित ।

आप ऊपर वर्णित अनुसार FormTypeParser का भी उपयोग कर सकते हैं। उदाहरण के लिए:

enter image description here

आशा है कि यह अब मदद करता है:

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'); 
} 

के रूप में पार्स किया जाएगा!

+0

के लिए प्रारूप के रूप में उन का उपयोग nelmio कृपया मेरे सवाल देखते हैं, मैं अद्यतन यह – ghanbari

+0

@घबारी ने उत्तर – chapay

+0

अपडेट किया है, यह काम करता है, लेकिन यह पहले से ही है, मैं फॉर्म प्रकार में सभी इकाई गुणों को फिर से परिभाषित करने के लिए मजबूर करता हूं उपयोगी नहीं है और दूसरी तरफ, मैं पाठ के रूप में अन्य फ़ील्ड के प्रारूप को निर्दिष्ट नहीं कर सकता – ghanbari