2011-11-04 25 views
11

मैं एक बहु-चरण फ़ॉर्म बनाने के लिए Symfony2 और CraueFormFlowBundle का उपयोग कर रहा हूं। मेरे दोहराए गए ईमेल फ़ील्ड को छोड़कर सब ठीक हो रहा है। मैं नहीं कर सकता, मेरे लिए, मुझे लगता है कि लेबल को कैसे रखना है। मैं form_widget (...) और लेबल लिखकर Twig व्यू में स्वयं द्वारा फॉर्म प्रस्तुत कर रहा हूं। मैं अपने ग्राहक की इच्छा के अनुसार सबकुछ बताता हूं। अब, वह ईमेल लेबल को "ई-मेल *" और "ई-मेल की पुष्टि करें" के रूप में देखना चाहता है (सितारों की आवश्यकता होने के बाद से)। अगर मैं form_row() का उपयोग करके दोहराए गए तत्व प्रस्तुत करता हूं, तो त्रुटियों को अब फॉर्म पर प्रदर्शित नहीं किया जाता है (लेकिन मेरे पास लेबल, स्नैप पर नियंत्रण है)। त्रुटियों का एकमात्र तरीका प्रदर्शित होता है (मुझे क्यों न पूछें), form_widget (form.giver.email) का उपयोग करके है जो पूरे दोहराए गए तत्व ऑब्जेक्ट को इंगित करता है। समस्या है, पूरे दोहराए गए तत्व को प्रस्तुत करने के लिए form_widget का उपयोग करके मुझे लेबल पर कोई नियंत्रण नहीं मिलता है।Symfony2 फॉर्म दोहराया तत्व कस्टम लेबल

पूरे दोहराए गए तत्व को प्रस्तुत करके, यह "first_name" और "second_name" पैरामीटर का उपयोग करके लेबल प्रिंट करता है। स्पष्ट कारणों से मैं इन मानकों में पूंजी अक्षरों और न ही धब्बे और सितारों को नहीं डाल सकता। मैं विकल्प सरणी में लेबल सेट करने का प्रयास करते हैं, तो उस लेबल Symfony2 दस्तावेज़ में वर्णित के रूप में दोनों क्षेत्रों के लिए पारित हो जाता है ...

मैं "प्रथम" और ".second" टहनी में का उपयोग कर मुद्रण कोशिश की, लेकिन मुझे यह बताते हुए एक त्रुटि मिलती है कि ये फॉर्म व्यू में मौजूद नहीं हैं।

अब मैं चाहता हूं कि दो लेबल अलग से सेट करने में सक्षम हों! यहां मेरा वर्तमान कोड है:

$builder->add('email', 'repeated', array(
     'type' => 'email', 
     'first_name' => 'email', 
     'second_name' => 'confirm', 
     'invalid_message' => 'The e-mails you provided did not match.', 
     'error_bubbling' => false 
    )); 

यह लेबल को "ईमेल" और "पुष्टि" के रूप में प्रिंट करता है। यहाँ "विकल्प" सरणी उपयोग कर रहा है:

$builder->add('email', 'repeated', array(
     'type' => 'email', 
     'first_name' => 'email', 
     'second_name' => 'confirm', 
     'invalid_message' => 'The e-mails you provided did not match.', 
     'error_bubbling' => false, 
     'options' => array(
      'label' => "TESTTT" 
     ), 
    )); 

यह दोनों दोहराया क्षेत्रों के लिए "TESTTT" लेबल प्रिंट होगा। क्या मैं इसके बारे में कुछ कर सकता हूं? जैसा ऊपर बताया गया है, form_row() का उपयोग फॉर्म भरने पर त्रुटियों को प्रदर्शित नहीं करता है यदि ईमेल बराबर नहीं हैं या यदि वे खाली हैं। इसलिए मैं form_widget() का उपयोग करने और पूरी बार-बार ऑब्जेक्ट को प्रस्तुत करने के लिए बाध्य हूं।

आपके समय के लिए अग्रिम धन्यवाद।

उत्तर

5

उपयोग

$formView->getChild('passwordFieldName')->getChild('second')->set('label', 'Enter password again'); 
+4

एक 'FormBuilder' भीतर काम कर रहा है (या फॉर्म प्रकार) सिंटैक्स '$ फॉर्म होगा- बिल्डर-> प्राप्त करें ('पासवर्ड फ़ील्डनाम') -> प्राप्त करें ('दूसरा') -> सेट एट्रिब्यूट ('लेबल', 'पासवर्ड फिर से दर्ज करें');' – Nick

0

अनुवाद फ़ाइल में फ़ील्ड का नाम और लेबल जोड़ने का प्रयास करें? ईजी। CraueFormFlowBundle.en.yml

6
{{ form_label(form.password.confirmpassword, 'Confirm Password') }} 
-1

किसी को भी सोच क्यों अनुकूलन फ़ॉर्म इनपुट काम नहीं करता है repated, इस बाहर की जाँच:

$builder->add('username', 'text') 
      ->add('email', 'email') 
      ->add('password', 'repeated'); 

आप "पहली" दे देंगे और "दूसरा" पासवर्ड, जिसे

{{ form_errors(form.password.first) }} 
{{ form_widget(form.password.first) }} 
{{ form_label(form.password.first) }} 

{{ form_errors(form.password.second) }} 
{{ form_widget(form.password.second) }} 
{{ form_label(form.password.second) }} 
012 के अनुसार बुलाया जा सकता है

लेकिन इस:

$builder->add('username', 'text') 
      ->add('email', 'email') 
      ->add('password', 'repeated', 
      array('type' => 'password', 
       'first_name'=>'Password', 
       'second_name' =>'Confirm password')); 

नहीं होगा !!!

2
$builder->add('username', 'text') 
      ->add('email', 'email') 
      ->add('password', 'repeated', 
      array('type' => 'password', 
       'first_name'=>'Password', 
       'second_name' =>'Confirm password')); 

गलत है, बेहतर

$builder->add('username', 'text') 
      ->add('email', 'email') 
      ->add('password', 'repeated', 
      array('type' => 'password', 
       'first_name'=>'first', 
       'second_name' =>'second')); 

कोशिश करते हैं और आप का उपयोग करने में सक्षम हो जाएगा:

->add('plainPassword', 'repeated', array(
    'type' => 'password', 
    'invalid_message' => "some.error.message", 
    'first_name' => 'somecoorectname', // (optional). 'first' value by default. 
    'first_options' => array(
     'label' => 'label.for.future.translate' // Custom label for element 
    ) 
    /* 
     The same way for Second field 
    */ 
)) 

आनंद लें:

{{ form_errors(form.password.first) }} 
{{ form_widget(form.password.first) }} 
{{ form_label(form.password.first) }} 

{{ form_errors(form.password.second) }} 
{{ form_widget(form.password.second) }} 
{{ form_label(form.password.second) }} 
11

अधिक आसान और सही तरीका है !

+0

यह खराब नहीं है Symfony2.0 के साथ के। यह मास्टर शाखा (> = 2.1?) में है लेकिन 2.0 शाखा में नहीं है। – flu

+1

हां, यह केवल सिम्फनी 2.1 के साथ काम करता है। स्वीकृत उत्तर में उल्लिखित दूसरी विधि 2.1 में अब और काम नहीं करती है। – smoove

+0

महान, यह एक आकर्षण की तरह काम करता है! मेरा कोड: $ बिल्डर-> जोड़ें ('पासवर्ड', 'दोहराया', सरणी ( 'प्रकार' => 'पासवर्ड', 'first_name' => "पासवर्ड", 'second_name' => "confirmpass" , 'invalid_message' => "पासवर्ड मेल नहीं खाते", 'first_options' => सरणी ('लेबल' => 'पासवर्ड'), 'second_options' => सरणी ('लेबल' => 'पासवर्ड दोहराने'))); – thorinkor

4

निम्नलिखित उदाहरण मेरे लिए काम किया।

  • यहाँ 'प्रकार' घोषणा:

    $builder->add('username', 'text') 
         ->add('email', 'email') 
         ->add('password', 'repeated', 
         array('type' => 'password')); 
    
  • और यहाँ 'टहनी' का उपयोग

    {{ form_errors(form.password.first) }} 
    {{ form_widget(form.password.first) }} 
    {{ form_label(form.password.first, 'Password') }} 
    
    {{ form_errors(form.password.second) }} 
    {{ form_widget(form.password.second) }} 
    {{ form_label(form.password.second, 'Confirm password') }} 
    
संबंधित मुद्दे