2011-06-28 25 views
20

मैं daterange नामक symfony2 में एक कस्टम फॉर्म फ़ील्ड बनाना चाहता हूं, जो डिफ़ॉल्ट सिम्फनी दिनांक प्रकार फॉर्म फ़ील्ड को विस्तारित करेगा और तिथि सीमा (प्रारंभ तिथि और समाप्ति तिथि) को दो अलग-अलग टेक्स्ट-बॉक्स में ले जाएगा।मैं symfony2 में कस्टम फ़ील्ड प्रकार कैसे बना सकता हूं?

+0

आप कोड कहीं प्रकाशित कर दिए हैं बनाने पर आधिकारिक रसोई की किताब में एक good entry है? –

उत्तर

22

क्योंकि मैं टहनी टेम्पलेट इंजन पसंद नहीं है केवल पीएचपी templating के लिए इस उदाहरण

क्या आप की जरूरत बनाने के लिए है:

  1. न्यू TestBundle\Form\Extension\Core\Type\DateRangeType जो Symfony\Component\Form\AbstractType

    फैली यहाँ आप चाहिए:
    ए। अपना खुद का प्राप्त करें माता-पिता, getName, buildForm विधियां
    बी लिखें। getParent वापसी 'फ़ील्ड'
    सी। getName वापसी 'daterange'
    डी। buildForm $builder->add('start', ...)->add('end', ...)->setAttribute('widget', 'daterange')

  2. डि (उदाहरण के रूप में config.yml) में जोड़ना है

 
    services: 
     form.type.daterange: 
      class: TestBundle\Form\Extension\Core\Type\DateRangeType 
      tags: 
       - { name: form.type, alias: daterange } 
  1. TestBundle/Resources/views/Form/daterange_widget.html.php में इसके लिए नए विजेट बनाएं आप उदाहरण के रूप में दिनांक विजेट ले सकते हैं। Src/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Resources/views/Form/date_widget.html.php

  2. config करने के लिए (उदाहरण के रूप में config.yml) जोड़ें

 
    framework: 
     templating: 
      form: 
       resources: 
        - 'TestBundle:Form' 

और nefo_x रूप में और अधिक विजेट अनुकूलन के लिए जाँच form customization कहा।

6

ऐसा करने में, आप src/Your/SuperBundle/Resources/views/Form/fields.html.twig में तो app/config/config.yml

twig: 
    form: 
     resources: 
      - 'YourSuperBundle:Form:fields.html.twig' 

में निम्नलिखित लाइनों को जोड़ने की आवश्यकता:

{% extends 'form_div_layout.html.twig' %} 

{% block daterange_widget %} 
    ... do the customization. 
{% endblock %} 

अतिरिक्त संदर्भ के लिए Symfony 2.0 पुस्तक के form customization पढ़ें।

+0

+1 'fields.html.twig' के लिए पथ का उल्लेख करने के लिए - यह दस्तावेज़ में स्पष्ट नहीं है। धन्यवाद। –

संबंधित मुद्दे