2013-08-07 9 views
17

मैं सिम्फनी के फॉर्मबिल्डर के साथ बनाए गए फॉर्म का अनुवाद करना चाहता हूं। चूंकि मैं एक बड़ी अनुवाद फ़ाइल नहीं चाहता हूं, यह splitted up "डोमेन" में है।Symfony2 - पूरे फॉर्म के लिए अनुवाद डोमेन सेट करें

अब मुझे प्रत्येक फॉर्म-फ़ील्ड के लिए translation_domain निर्दिष्ट करना होगा, अन्यथा सिम्फनी गलत फ़ाइल में दिखेगा। इस विकल्प को हर क्षेत्र में जोड़ा जाना है और मैं सोच रहा हूं कि इस विकल्प को पूरे रूप में सेट करने का कोई तरीका है या नहीं?

नमूना कोड मैं के साथ खुश नहीं हूँ: अपने setDefaultOptions को

public function setDefaultOptions(OptionsResolverInterface $resolver) 
{  
    $resolver->setDefaults(array(
     'translation_domain' => 'comment' 
    )); 

} 

:

$builder->add(
    'author_name', 
    'text', 
    array('label' => 'Comment.author_name', 'translation_domain' => 'comment') 
)->add(
    'email', 
    'email', 
    array('label' => 'Comment.email', 'translation_domain' => 'comment') 
)->add(
    'content', 
    'textarea', 
    array('label' => 'Comment.content', 'translation_domain' => 'comment') 
); 

उत्तर

49

फिर आप है अपने रूप की एक डिफ़ॉल्ट विकल्प के रूप में सेट करने के लिए, इस ऐड विधि, आपके रूप में।

+0

धन्यवाद। पूरी तरह से भूल गए बी/सी पहले कभी इसकी जरूरत नहीं थी। –

+1

कक्षा के बिना बनाए गए फॉर्म पर क्या है? – drskullster

+1

अब इसे बहिष्कृत किया गया है। इसके बजाय ConfigOptions विधि का उपयोग करें –

23

Ahmed के जवाब में विधि का नाम अब (Symfony 2.7 के बाद से) हटाई गई है, यह ऐसा करने का 2.7+ तरीका है:

/** 
* Configures the options for this type. 
* 
* @param OptionsResolver $resolver The resolver for the options. 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefault('translation_domain', 'messages'); 
} 
उसी तरह से आप अपने

data_class सेटिंग, आदि

सेट

फॉर्म निर्माता का उपयोग करके ऐसा करने के लिए, फॉर्म निर्माता पर options तर्क है। नियंत्रक से, उदाहरण के लिए:

$form = $this->createFormBuilder($entity, ['translation_domain' => 'messages'])->add(..)->getForm(); 

आप FormFactory सेवा का उपयोग कर रहे हैं, यह होगा

$formFactory->createBuilder('form', $entity, ['translation_domain' => 'messages']); 
2

या मामले में आप फैक्टरी के namedBuilder का उपयोग करें कि होगा:

$formBuilder = $this->get('form.factory')->createNamedBuilder('myForm', 'form', $data, array(
    'translation_domain' => 'forms', 
)); 
0

सिम्फनी 3

/** 
* Configures the options for this type. 
* 
* @param OptionsResolver $resolver The resolver for the options. 
*/ 
public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'translation_domain' => 'forms', 
     // Add more defaults if needed 
    )); 
} 
संबंधित मुद्दे