2012-05-27 7 views
9

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

उदाहरण के लिए मैं अलग-अलग 'विकल्प' टैग को 'चयन' के अंदर अलग-अलग सीएसएस शैलियों को लागू करना चाहता हूं। मुझे केवल टैग में कक्षा जोड़ने का एक तरीका मिल सकता है।

अग्रिम धन्यवाद।

उत्तर

4

आप अपने फॉर्म में विशिष्ट विजेट्स के लेआउट को ओवरराइड कर सकते हैं, जिसका अर्थ है कि आप चयन रेंडर के तरीके को ओवरराइड कर सकते हैं और कस्टम कोड में डाल सकते हैं ताकि यह पता चल सके कि विकल्प का मूल्य क्या है और वहां अपनी कस्टम क्लास आउटपुट है।

तुम इतनी

{% form_theme form 'form_theme.html.twig' %} 

की तरह, अपने फार्म के लिए एक कस्टम लेआउट लागू करने की आवश्यकता तब लेआउट फ़ाइल के अंदर आप (जो विशिष्ट रूप के लिए विशिष्ट क्षेत्र ओवरराइड करने के लिए जब तक कि बेशक आप choice_widget संपादित करना चाहते हैं की जरूरत है सीधे जिस मामले में चुनाव का उपयोग करने वाले सभी फ़ील्ड में कार्यक्षमता होगी)।

आप विजेट नकल करने के लिए है कि ऐसा करने के लिए, तो choice_widget, तो नाम यह [_formName_fieldName_widget]

इसलिए यदि आपके प्रपत्र नाम घटनाओं था और अपने क्षेत्र का नाम requireTickets था, यह होगा _events_requireTickets_widget

+0

आप, मैं धन्यवाद विशिष्ट शैलियों को लागू करने के लिए कक्षा के नाम की आवश्यकता नहीं थी, लेकिन कुछ jQuery प्लगइन्स

10

मुझे लगता है कि ...

{{ form_widget(form.name, { 'attr' : { 'class' : 'myClass' } }) }} 

रूप here बताया गया है, अपने स्वयं के प्रपत्र शैली बनाने के बिना: आप बस कर सकते हैं।

+0

... या आप बस div_widget को div div के साथ लपेटें और इसमें एक विशेषता असाइन करें। –

+6

यह टैग को चुनिंदा और संभवतः विकल्पों में जोड़ देगा लेकिन यह आपको अलग-अलग विकल्पों में कक्षाएं लागू करने नहीं देगा। – CriticalImpact

+0

@ क्रिटिकलइम्पैक्ट आप सही हैं, इसलिए ओपी को कस्टम शैली बनाना चाहिए। – gremo

4

जो उत्तर पहले से ही प्रदान किए गए थे वे बहुत अच्छे हैं, और मुझे लगता है कि @ क्रिटिकलइम्पैक्ट सबसे लचीला है। ,

class SomeType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('someField', "text", array("attr" => array("class" => "someCssClass"))) 
      ->add("save", "submit"); 
    } 
} 

मैं बुनियादी रूपों के लिए यह उपयोगी पाया है क्योंकि: लेकिन मैं सिर्फ इतना है कि अगर आप एक प्रपत्र वर्ग का उपयोग कर रहे हैं, आप भी अतिरिक्त विशेषताएँ क्षेत्र के लिए फार्म बिल्डर परिभाषा खुद के माध्यम से जोड़ सकते हैं उल्लेख करना चाहता था यह आपको अभी भी अपनी Twig फ़ाइल में एक सरल {{ form(someForm) }} कॉल करने की अनुमति देता है।

(ध्यान दें इस समाधान अभी भी दोष @CriticalImpact उल्लेख किया है कि above है)

0

जोड़ें अलग-अलग विकल्पों को सीएसएस शैलियों आजकल choice_attr साथ प्राप्त किया जा सकता है, जैसे जैसे गुण:

use Symfony\Component\Form\Extension\Core\Type\ChoiceType; 
// ... 

$builder->add('attending', ChoiceType::class, array(
    'choices' => array(
     'Yes' => true, 
     'No' => false, 
     'Maybe' => null, 
    ), 
    'choice_attr' => function($val, $key, $index) { 
     // adds a class like attending_yes, attending_no, etc 
     return ['class' => 'attending_'.strtolower($key)]; 
    }, 
)); 
संबंधित मुद्दे

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