5

में कोई फ़ॉर्म व्यू बनाना Zend_Form के लिए कस्टम व्यू बनाने का कोई विश्वसनीय तरीका है? सजावटी बहुत गुप्त हैं और उन्हें फैंसी तरीके से उपयोग करते हुए कभी-कभी इतना जटिल होता है कि मैं सिर्फ हाथ से HTML लिखना पसंद करूंगा। क्या ऐसा करने का कोई तरीका है और अभी भी फॉर्म को नियंत्रक के साथ पूरी तरह से सहयोग करना है (उदाहरण के लिए $form->isValid() पर कॉल करें और सब कुछ ठीक से सत्यापित करने की उम्मीद करें)? यदि हां, तो क्या कोई चेतावनी देखने के लिए हैं (जैसे सत्यापन त्रुटियों के प्रदर्शन की देखभाल करना)?ज़ेंड

आदर्श समाधान एक फॉर्म बनाना होगा और तत्व सरणी (नाम, आईडी, इनपुट प्रकार और HTML को प्रस्तुत करने के लिए आवश्यक सभी आवश्यक डेटा) को पास करना होगा - क्या ज़ेंड फ्रेमवर्क इसे अनुमति देता है?

<?php 
$userid = $this->form->getElement('userid'); 
$pass = $this->form->getElement('password'); 
$remember = $this->form->getElement('remember'); 
$submit = $this->form->getElement('submit'); 
?> 
<form enctype="<?php echo $this->form->getEnctype(); ?>" method="<?php echo $this->form->getMethod(); ?>" action="<?php echo $this->form->getAction(); ?>" id="<?php echo $this->form->getId(); ?>"> 
name: <input type="text" id="<?php echo $userid->getId(); ?>" name="<?php echo $userid->getName(); ?>" /><br /> 
pass: <input type="password" id="<?php echo $pass->getId(); ?>" name="<?php echo $pass->getName(); ?>" /><br /> 
remember: <input type="checkbox" id="<?php echo $remember->getId(); ?>" name="<?php echo $remember->getName(); ?>" /><br /> 
submit: <input type="submit" id="<?php echo $submit->getId(); ?>" name="<?php echo $submit->getName(); ?>" value="<?php echo $submit->getValue(); ?>" /> 
</form> 

फार्म और ठीक से काम करने लगता है:

[संपादित करें]

सिर्फ echo प्रपत्र वस्तु ing के बजाय, मैं ध्यान में रखते हुए इस कोड (एक सरल लॉगिन फार्म) जोड़ने की कोशिश की है मान्य करें (हालांकि मुझे उस पृष्ठ को रीडायरेक्ट नहीं किया गया है - लेकिन यह एक अलग समस्या है, मुझे विश्वास है, क्योंकि मैं GET के माध्यम से फॉर्म में नहीं हूं)। क्या यह स्वीकार्य है, या क्या मैं इसे जानने के बिना कुछ ग़लत गलत कर रहा हूं?

+0

आप $ फार्म का उपयोग कर डेटा के साथ zend_forms पॉप्युलेट कर सकते हैं> ($ डेटा) को पॉप्युलेट ; – Marcin

+0

मेरा मतलब डेटा के साथ उन्हें पॉप्युलेट करने का मतलब नहीं है, मेरा मतलब है कि उन भयानक, भयानक सजावटीों का उपयोग करने के बिना, अपने स्वयं के HTML लिखना। – mingos

+0

यह एक गन्दा विधि है, और इसलिए मैं इसे उत्तर के रूप में पोस्ट नहीं करूंगा, लेकिन जैसा कि मार्किन ने सुझाव दिया है, आप अभी भी एक ही दृश्य में अपना स्वयं का फॉर्म लिख सकते हैं, ठीक उसी आईडी के साथ, और Zend_Form के साथ अपना फॉर्म लिख सकते हैं, और फिर फिल्टर, सत्यापनकर्ता, आदि का उपयोग करने के लिए इसे पॉप्युलेट करें ... आप Zend_Form का उपयोग किए बिना स्टैंडअलोन फ़िल्टर और सत्यापनकर्ता का भी उपयोग कर सकते हैं, मूल रूप से यह जेनर_फॉर्म का उपयोग जेनरेट फॉर्म के बिना करना है। लेकिन सबसे अच्छी सलाह अभी भी है: सजावट में गोता लगाएँ;) –

उत्तर

2

बहुत कुछ डिजाइन और अंतिम लेआउट पर निर्भर करता है।

आप सत्यापन त्रुटियों को कहां प्रदर्शित करना चाहते हैं? कैसे? त्रुटि सजावट के माध्यम से?
क्या आप विवरण का भी उपयोग करना चाहते हैं?
क्या आपको अन्य सजावट का उपयोग करने की आवश्यकता है?

सबसे अच्छा तरीका सिर्फ अपना खुद का Zend_Form_Element_ThreadIcons तत्व बनाना है। यह Zend_Form तत्वों में से एक को उपclassing और कस्टम _render() विधि को लागू करने की विधि को आसान बनाने के लिए आसान है। आप अपने View उदाहरण का भी उपयोग कर सकते हैं।

फिर आप एक तत्व विकल्प के रूप में आइकन की सरणी पारित कर सकते हैं और जिस तरह से आपको आवश्यकता है उसे संभाल सकते हैं।

आप सज्जाकार का उपयोग कर निर्णय लेते हैं, आप तकनीक में महारत हासिल करने के लिए इस प्रस्तुति बहुत ही उपयोगी पाते हैं मेरे में:

+0

मुझे यह समाधान पसंद है। मैं सोमवार को काम पर वापस आऊंगा, इसलिए मैं इसे फिर से देखूंगा :)। – mingos