मैं Zend Form (Zend Framework 2) के साथ डेटाबेस से एक रिकॉर्ड संपादित करना चाहता हूं।
ZF1 में मैंने अपने कंट्रोलर में किया:
$values = $table->getValues();
$form = new MyForm();
$form->populate($values);
$this->view->form = $form;
और व्यूस्क्रिप्ट में:
<?php echo $this->form ?>
ZF2 में मैंने अपने कंट्रोलर में कोशिश की:
$values = $table->getValues();
$form = new MyForm();
$form->populateValues($values); // form->setData($values) does not work either
return array("form" => $form);
और मेरे विचार में:
<?php echo $this->form()->openTag($form) ?>
<?php echo $this->formCollection($form) ?>
<?php echo $this->form()->closeTag($form) ?>
लेकिन यह डेटा के बिना, प्रपत्र प्रस्तुत करता है।
ऐसा करने का सही तरीका क्या है?
उत्तर:
जवाब के लिए 0 № 1आपको कॉल करने की ज़रूरत है prepare()
अपने दृश्य स्क्रिप्ट में खोलने से पहले अपने फ़ॉर्म पर। उदाहरण के लिए:
<?php $form->prepare(); ?>
<?php echo $this->form()->openTag($form) ?>
<?php echo $this->formCollection($form) ?>
<?php echo $this->form()->closeTag($form) ?>
संदर्भ गाइड देखें यहाँ
निम्नलिखित बिंदु पर ध्यान दें:
तैयार () विधि। इसमें कुछ भी रेंडर करने से पहले आपको इसे कॉल करना होगा दृश्य (यह फ़ंक्शन केवल विचारों में कहा जाने वाला है, न कि अंदर नियंत्रक)।
जवाब के लिए 0 № 2
मुद्दा यह था कि $table->getValues()
मेरे कोड में एक arrayObject जबकि देता है populateValues()
एक सरणी की उम्मीद है।