2011-09-20 19 views
22

मैं symfony2 में प्रत्येक फ़ील्ड के रूप में कुछ सहायता संदेश जोड़ने की कोशिश कर रहा हूं।फ़ील्ड में "सहायता" संदेश जोड़ना

मैं आधिकारिक डॉक्स में के बारे में एक ही समाधान पढ़ा है: http://symfony.com/doc/current/cookbook/form/form_customization.html#adding-help-messages

लेकिन इस समाधान, थोड़ा समझ में आता है क्योंकि हम मैन्युअल रूप से सभी प्रपत्र बनाने की जरूरत है। उदाहरण के लिए, लेबल को परिभाषित करना आसान है: $formBuilder->add('myfieldname', 'text', array('label'=>'some my field label')); लेकिन सहायता संदेशों को कैसे पास किया जाए?
https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension
यह आपको सीधे आपसे विशेषताओं को संपादित करने में सक्षम बनाता है: (दूसरे शब्दों में, कुछ कस्टम चर)

उत्तर

12

$formBuilder->add('myFieldName', 'text', array('help' => 'My Help Message')); लेकिन यह आपको लगता है यह भी एक विस्तार है जो सभी रूपों के लिए एक डिफ़ॉल्ट विकल्प के रूप में जोड़ जोड़ने की जरूरत FormTypes।

+2

कि बंडल पुनर्संशोधित किया गया और लिंक wor नहीं है के और भी। अभी यहां जाएं: https://github.com/simplethings/SimpleThingsFormExtraBundle#helpextension – jmlnik

1

यदि आप अपनी परियोजना के लिए बूटस्ट्रैप का उपयोग करने की योजना बना रहे हैं तो थोड़ा सा विषय अभी भी उपयोगी है, तो आप मोपा बूटस्ट्रैप बंडल द्वारा प्रदान किए गए कुछ फॉर्म हेल्पर्स का लाभ उठा सकते हैं।

डेमो: http://bootstrap.mohrenweiserpartner.de/mopa/bootstrap/forms/help_texts

GitHub: https://github.com/phiamo/MopaBootstrapBundle

उदाहरण:

<?php 

$form = $this->get('form.factory') 
     ->createNamedBuilder('form_name') 
     ->setMethod('POST') 
     ->add('testSelect', 'choice', [ 
      'choices' => ['val1' => 'Value 1', 'val2' => 'Value 2'], 
      'required' => true, 
      'help_block' => 'Here some help text!!!' 
     ]) 
     ->add('Save', 'submit') 
     ->getForm(); 

return $form->createView(); 
3

आप के रूप में आप वर्णित सरकारी डॉक्स में समाधान का उपयोग कर सकते हैं।

लेकिन, काम अभी तक पूरा नहीं हुआ है। पर्चा प्रकार Extention निर्माण आप इस तरह सहायता संदेश में जोड़ सकते हैं पूरा करने के बाद http://symfony.com/doc/current/cookbook/form/create_form_type_extension.html

:

$form = $this->createFormBuilder() 
      ->add('name', 'text', array(
       'help' => 'this is a help message to user', 
     )) 

मुझे लगता है कि यह एक देशी बेहतर समाधान है आप एक प्रपत्र प्रकार Extention, इस लेख के आधार पर बनाना होगा। http://toni.uebernickel.info/2012/11/03/how-to-extend-form-fields-in-symfony2.1.html

+0

मुझे यकीन है कि उत्तर लिंक में है लेकिन क्या आप दस्तावेज़ और आलेख से समाधान को रेखांकित कर सकते हैं? – Trudbert

20

एक एक और विस्तार के बिना किसी अन्य विधि:

आपके प्रपत्र बिल्डर वर्ग में:

इसके अलावा, मैं इस महान लेख आप कैसे सक्षम और symfony2 रूपों में मदद विकल्प सेट करने से पता चलता है कि पढ़ा की सलाह देते हैं
$builder->add('yourField',null, array('attr'=>array('help'=>'text help'))) 

आपके प्रपत्र टेम्पलेट फिर से लिखने में:

{% block form_row %} 
    {% spaceless %} 
      {{ form_label(form) }} 
       {{ form_widget(form) }} 
       {% for attrname, attrvalue in attr %} 
        {% if attrname == 'help' %} 
         <span class="help-block">{{ attrvalue }}</span> 
        {% endif %} 
       {% endfor %} 
      {{ form_errors(form) }} 
    {% endspaceless %} 
{% endblock form_row %} 
+2

यह समाधान इनपुट फ़ील्ड में विशेषता 'सहायता' जोड़ देगा, इसलिए यह आदर्श नहीं है। यह अमान्य एचटीएमएल बनाता है। – pulzarraider

+1

@ पुलज़राइडर सही है। इसके बजाय 'डेटा-सहायता' विशेषता का उपयोग करें। –

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