2010-01-25 11 views
5

मेरे पास एक ऐसा फॉर्म है जो Zend_Form से बढ़ाया गया है। मैं इस तरह के ViewScript डेकोरेटर में प्रपत्र रखने कर रहा हूँ:zend_form व्यूस्क्रिप्ट सजावट/गुजरने वाले तर्क

$this->setDecorators(array(array('ViewScript', array('viewScript' => 'game/forms/game-management.phtml')))); 

मैं इस ViewScript करने के लिए एक चर में पारित करने के लिए पसंद है, लेकिन यकीन है कि यह कैसे किया जा सकता नहीं कर रहा हूँ चाहते हैं।

आंशिक रूप से Zend_View के रूप में प्रस्तुत करता है (यह $-- app_store_icon प्रतिपादन के लिए अनुमति देता है), ऐसा लगता है कि प्रस्तुत किए जाने वाले चर को पारित करने का एक तरीका होना चाहिए। मैंने निम्नलिखित की कोशिश की लेकिन इसका कोई फायदा नहीं हुआ।

$this->setDecorators(array(array('ViewScript', array('viewScript' => 'game/forms/game-management.phtml'),array('app_store_picon'=>$current_app_store_picon)))); 

यह करने के तरीके पर कोई मदद की सराहना की जाएगी।

धन्यवाद

उत्तर

10

यह एक थोड़ा मुश्किल है, मुझे मुक्केबाज़ी एक आधा यह पता लगाने के लिए एक घंटे लग गए, लेकिन यह किया जा सकता है :)

बिंदु है, कि आप के लिए विकल्प गुजर रहे हैं ViewScript सजावटी और तत्व के लिए नहीं। ,

$option = $this->element->getDecorator('ViewScript')->getOptions(); 

पहले मामले में एक विकल्प के साथ इसे पारित:

$this->setDecorators(array(array('ViewScript', array(
    'viewScript' => 'test.phtml', 
    'foo'=>'baz', 
)))); 

या विकल्पों की एक सरणी:

$this->setDecorators(array(array('ViewScript', array(
    'viewScript' => 'test.phtml', 
    array(
     'foo'=>'baz', 
     'spam'=>'ham', 
    ), 
)))); 

आंशिक में है कि बाहर हो रही है, test.phtml विकल्प जोड़ा जा रहा है $option['foo'] होगा और दूसरे में यह $option[0]['foo']

एच होगा वें :)

+0

मुझे व्यक्तिगत रूप से दूसरी विधि मिली जो आपने पहले की तुलना में अधिक प्रभावी होने के लिए प्रदान की थी। धन्यवाद :) – jjmu15

2

वहाँ संभव तरीके एक रूप है, जो मुझे लगता है कि आप पर विचार करना चाहिए के अंदर आइकन को जोड़ने को प्राप्त करने का एक और जोड़ी है,

एक अपने स्वयं के तत्व प्रकार जोड़ने के लिए, और के लिए एक कस्टम डेकोरेटर जोड़ा जाए आइकन (मैं इसे सरल जोड़ने के लिए करता हूं? अगली मदद के लिए आइकन, या तत्व बनाने के लिए ब्राउज़र ब्राउज़ करें)। यह करने के लिए एक काफी सरल मामला है।

दूसरा आपके तत्व में केवल एक HTMLTag सजावट जोड़ना होगा, जिसमें आप विकल्पों के रूप में src जैसे गुण निर्दिष्ट कर सकते हैं।

ये दो समाधान वास्तव में प्रबंधित करने के लिए चीजों को सरल बनाने के शीर्ष पर एक और छिपे हुए लाभ के साथ आते हैं, वे आंशिक दृश्य सहायक का उपयोग भी हटाते हैं, जिसका उपयोग प्रत्येक दृश्यस्क्रिप्ट सजावट के लिए उपयोग में किया जाता है।

आंशिक दृश्य सहायक आपके फॉर्म की स्मृति और समय के ऊपरी हिस्से में अत्यधिक जोड़ सकता है (जो कि पहले से काफी बड़े पैमाने पर है), जब आप संपूर्ण रूप के बजाय तत्वों पर व्यूस्क्रिप्ट सजावट का उपयोग करते हैं तो यह अधिक उत्साहित होता है!

2

मुझे htmlcript.phtml फ़ाइल में स्कोर स्थिति इंगित करने वाला एक HTML कोड पास करने की आवश्यकता है। मुझे सजावटी के साथ इसे पास करने से एक आसान तरीका मिला, जो नियंत्रक की कार्रवाई से मूल्य पारित कर रहा है जैसे कि आप इसे सामान्य ज़ेंड दृश्य स्क्रिप्ट में पास कर रहे हैं। उदाहरण:

<Controller> 
// pass status and score to view 
$this->view->status = $this->_sitenamehelper->get_status($id); 
$this->view->score = $this->_sitenamehelper->get_score($id); 

<viewscript.phtml partial file> 
<?php $form = $this->element; ?> 
<b>Status: </b><?php echo $form->getView()->status; ?> 
<b>Score: </b><?php echo $form->getView()->score; ?> 

और वहां आप किसी भी एचटीएमएल प्रस्तुत कोड को पास कर सकते हैं .. मुझे लगता है कि यह आइकन के लिए काम करेगा ..

मोहनद

+0

मुझे इस प्रश्न का उत्तर तीन दिन पहले मिला। आप मेरी बहुत मदद करते हैं! धन्यवाद! मैं खराब अंग्रेजी हूं, क्षमा करें। –