2013-02-03 11 views
5

ज़ेंड फ्रेमवर्क 2, two new form elements were added के नए रिलीज़ संस्करण के साथ; DateSelect और MonthSelect। मैं पूर्व का उपयोग करना चाहता हूं, जो तीन चयन जोड़ता है; दिन, महीना और साल। हालांकि, मुझे आउटपुट को स्वरूपित करने में समस्या है जो मैं चाहता हूं - और, इसके लिए कोई दस्तावेज नहीं है!ज़ेंड फ्रेमवर्क 2 दिनांक चयन/माह चयन स्वरूपण

मैं इस तरह मेरी फार्म के लिए प्रपत्र तत्व जोड़ कर रहा हूँ (this page से लिया गया):

$this->add(array(
    'type' => 'Zend\Form\Element\DateSelect', 
    'name' => 'birthDate', 
    'options' => array(
     'label'    => 'Date', 
     'create_empty_option' => true, 
     'day_attributes'  => array(
      'data-placeholder' => 'Day', 
      'style'   => 'width: 20%', 
     ), 
     'month_attributes' => array(
      'data-placeholder' => 'Month', 
      'style'   => 'width: 20%', 
     ), 
     'year_attributes'  => array(
      'data-placeholder' => 'Year', 
      'style'   => 'width: 20%', 
     ) 
    ) 
)); 

outputting के लिए, मैं इस तरह कर रहा हूँ:

echo $this->formDateSelect($form->get('birthDate')); 

बात यह है कि मैं डॉन यह नहीं पता कि चयन किस प्रकार स्वरूपित हैं। उदाहरण के लिए, वे वर्तमान में इस फ़ॉर्म में outputted हैं: [month] [day], [year]। मैं दो चीजें बदलना चाहता हूं; सबसे पहले, मैं दिन और महीने स्विच करना चाहता हूं, और दूसरी बात, मैं अल्पविराम से छुटकारा पाना चाहता हूं।

सहायक उपकरण चयन करने के लिए IntlDateFormatter कक्षा का उपयोग करते हैं। स्रोत कोड में, मैंने देखा है कि आप जब __invoke() [link to source code] बुला, इस तरह की तारीख प्रकार के लिए predefined constants उपयोग कर सकते हैं:

echo $this->formDateSelect($form->get('birthDate'), IntlDateFormatter::SHORT); 

स्थिरांक के सभी की कोशिश की करने के बाद, मैं अभी भी प्रारूप मैं चाहता हूँ नहीं मिल सकता है।

मैंने देखा कि तीन चयनों के लिए गेटर्स हैं, लेकिन formSelect का उपयोग करके उनमें से प्रत्येक के साथ सहायक देखें, खाली चयन प्रदान किए जाते हैं क्योंकि डेटा जनसंख्या नए दृश्य सहायकों के भीतर होती है। इसलिए कि व्यक्तिगत रूप से चयनों का उपयोग करने के उद्देश्य से काफी हद तक हराया जाता है; तो मैं नियमित रूप से नियमित चयन का भी उपयोग कर सकता हूं।

क्या किसी को भी कोई विचार है कि मैं अपने चयन कैसे प्रारूपित करता हूं इस पर अधिक नियंत्रण प्राप्त कर सकता हूं? क्या यह बहुत अधिक परेशानी के बिना भी संभव है, या क्या मुझे अधिकतम लचीलापन के लिए केवल तीन नियमित चयनों का उपयोग करना चाहिए?

उत्तर

2

ViewHelper का प्रारूप $this->formDateSelect($element, $intlFormat, $locale) है।

यह कहा जा रहा है कि, आप अपने वर्तमान लोकेल सेटिंग तक पहुंचकर आउटपुट बनाने में सक्षम होना चाहिए और ViewHelpers __invoke() में int डालें। ViewHelper की getLocale() देखकर निकलता है, कि विन्यास से डिफ़ॉल्ट translator, नहीं किया जाता है, ताकि आप इस ViewHelper के लिए स्पष्ट रूप से एक locale स्थापित करने के लिए है, लेकिन फिर इसे ठीक बाहर काम करना चाहिए;)

यदि वह काम नहीं करता है जैसा कि आपके लिए अपेक्षित है, मैं आपको his Blog about the new Form Features

+0

मैं बस यह मान रहा था कि यह मेरी कॉन्फ़िगरेशन से लोकेल का उपयोग कर रहा था इसलिए मैंने इसे छोड़ दिया। लोकेल बदलना, यह हमेशा मुझे वह नहीं देता जो मैं चाहता हूं (उदाहरण के लिए, मेरे देश के लिए यह मुझे एक प्रारूप देता है जिसे मैं पसंद नहीं करता)। हालांकि, मैं भाग्यशाली था कि मेरी लक्षित भाषा के लिए, प्रारूपण बिल्कुल ठीक है कि मैं इसे कैसे चाहता हूं! मैंने ऐसा किया: 'यह $ echo-> formDateSelect ($ this-> form-> get (' birthDate '), IntlDateFormatter :: लंबा,' ro_RO '); '। आपके उत्तर के लिए बहुत बहुत धन्यवाद - यह बहुत सराहना की है! – Andy0708

2

पर एक संदेश को बताने के लिए सलाह दे सकता हूं कि मुझे कोई जानकारी नहीं है कि कोई भी तारीख को आउटपुट करते समय चयन डीओएम तत्वों के बीच यादृच्छिक अल्पविराम क्यों डालना चाहता है ... आप क्या कर सकते हैं बिल्कुल इसके साथ?

अल्पविराम और किसी भी अन्य सीमांकक आप विकल्पों के माध्यम से में पारित कर सकते हैं निकालने के लिए:

"render_delimiters": false 

कौन सा मैं डिफ़ॉल्ट

को ग़लत बता चाहिए
0

सैम उल्लेख के रूप में आप सिर्फ में लोकेल सेटिंग को अपडेट कर सकते हैं अपने php.ini

उदाहरण के लिए मेरे पास यह मेरे PHP में है।आरं

intl.default_locale = en_GB

इस दिन/माह/वर्ष प्रारूप मेरी ब्रिटेन परियोजनाओं के लिए आवश्यक में DateSelect तत्व स्वरूप।

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