फ़ॉर्म फ़ील्ड के लिए डिफ़ॉल्ट मान कैसे सेट करें?


18

मेरे पास एक व्यवस्थापक फ़ॉर्म फ़ील्ड (टेक्स्टबॉक्स) है,

$fieldset->addField('ajax_time_interval', 'text', array(
          'label'     => Mage::helper('dealroom')->__('Page Refresh Time Interval'),
          'class'     => 'required-entry',
          'required'  => true,
          'name'      => 'ajax_time_interval',
      ));

मुझे इस पाठ क्षेत्र के लिए एक डिफ़ॉल्ट मान सेट करने की आवश्यकता है। मैंने कोशिश की, 'value' => '120',उसमें सेटिंग की । लेकिन इसका काम नहीं हो रहा है।

$fieldset->addField('ajax_time_interval', 'text', array(
          'label'     => Mage::helper('dealroom')->__('Page Refresh Time Interval'),
          'class'     => 'required-entry',
          'required'  => true,
          'name'      => 'ajax_time_interval',
          'value'     => '120', 
      ));

उस क्षेत्र में एक डीफॉल्ट मान कैसे सेट करें?


1
जांचें कि यह ब्राउज़र कैश समस्या नहीं है। मेरे पास यह सर्वर काल है, विशेष रूप से फ़ायरफ़ॉक्स में, जो नवीनतम मूल्यों को कैशिंग कर रहा है।
टॉबी

5
क्या आपने सत्यापित किया है कि आप फ़ील्ड परिभाषा के बाद फॉर्म पर सेटवैल्यूज़ नहीं कर रहे हैं? यदि आप करते हैं और उपयोग की गई वस्तु (या सरणी) खाली है, तो सभी मान साफ़ हो जाते हैं।
पेटर दज़मबाज़

1
@ पीटर- हाँ! यह मुद्दा था ...! धन्यवाद, मैं उपयोग कर रहा था setValues..
विष्णु रेणु

जवाबों:


7

क्या टेक्स्टफील्ड स्वयं प्रदर्शित है? सेटिंग 'value' => '120'मुझे सही लगती है।


हाँ। इसे प्रदर्शित किया जाता है। :(
विष्णु रेणुकु

5
@ अन्ना वोक्कल: आप सही हैं लेकिन यदि addValues()बाद में विधि का उपयोग किया जाता है तो उन मूल्यों को फिर से लिखा जा रहा है।
user487772

11

आपकी समस्या यह है कि आपके द्वारा addField()विधि के साथ सेट किए गए मानों को तब विधि से अधिलेखित कर दिया जाता addValues()है जो प्रपत्र फ़ील्ड मान सेट करने का प्रयास करते हैं जब फ़ॉर्म मौजूदा संस्थाओं को संपादित करने के लिए उपयोग किया जाता है या प्रस्तुत करने के दौरान त्रुटि उत्पन्न होती है।

यहाँ एक समाधान है। सबसे अधिक संभावना है कि आप इस तरह से संरक्षित विधि के साथ मान प्राप्त कर रहे हैं:

protected function _getFormData()
{
    $data = Mage::getSingleton('adminhtml/session')->getFormData();

    if (!$data && Mage::registry('current_osmm_project')->getData()) {
        $data = Mage::registry('current_osmm_project')->getData();
    }

    return (array) $data;
}

इसलिए आपकी _prepareForm()विधि के अंदर आप प्रतिस्थापित करते हैं:

$form->addValues($this->_getFormData());

साथ में:

$_data = $this->__getFormData();
if (!empty($_data)) {
    $form->addValues($_data);
}

2

अपना बहुमूल्य समय और प्रयास खर्च करने के लिए सभी को धन्यवाद। मैं के setValues()बाद उपयोग कर रहा था addfields। इसलिए डिफ़ॉल्ट मान साफ़ किए जा रहे थे।

मैं इसे एक ifलूप प्रदान करके दूर करता हूं , जैसे:

if (Mage::registry('dealroom_data')->getAjaxTimeInterval() < 0 || Mage::registry('dealroom_data')->getAjaxTimeInterval() == "") {
    Mage::registry('dealroom_data')->setAjaxTimeInterval(120);
}

120 यहाँ मेरा डिफ़ॉल्ट समय है।


कृपया मेरे उत्तर को संपादित करें देखें।
user487772

1

किसी के लिए देख रहे हैं और 1.9 पर काम कर रहे हैं और नीचे है

if($model){
    $form->setValues($model->getData());
}

आप अपने मौजूदा डेटा को संपादित करने के बिना निम्नलिखित कार्य कर सकते हैं, उस कोड स्थान के ऊपर:

if($model->getData('fieldName') == ""){
    $model->setData('fieldName', "yourValue");
}

बेशक आप चेक कर सकते हैं और इस तरह से चूक की स्थापना का मूल संस्करण है।


0

आप उपयोग कर सकते हैं

$data['ajax_time_interval'] = 120;

जहाँ $dataफ़ील्ड फ़ील्ड की एक सरणी है।

$data['{field_name}'] = '{field_name}';

0

=> आप प्रपत्र फ़ील्ड में 'डिफ़ॉल्ट' विशेषता जोड़ सकते हैं । ऐशे ही :

        $fieldset->addField('ajax_time_interval', 'text', array(
      'label'     => Mage::helper('dealroom')->__('Page Refresh Time Interval'),
      'class'     => 'required-entry',
      'required'  => true,
      'name'      => 'ajax_time_interval',
      'default'     => '120', 
  ));

यह काम नहीं कर रहा है
हेमंत सांखला
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.