ফর্ম ক্ষেত্রগুলির জন্য কীভাবে ডিফল্ট মান সেট করবেন?


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()পরে যদি পদ্ধতি ব্যবহার করা হয় তবে সেই মানগুলি আবারও লেখা হচ্ছে।
ব্যবহারকারীর 487772

11

আপনার সমস্যাটি হ'ল আপনি addField()পদ্ধতির সাথে সেট মানগুলি সেই পদ্ধতির সাথে ওভাররাইট করা হয় addValues()যা ফর্ম ক্ষেত্রের মানগুলি সেট আপ করার চেষ্টা করে যখন ফর্মটি বিদ্যমান সত্তাগুলি সম্পাদনের জন্য ব্যবহৃত হয় বা জমা দেওয়ার সময় ত্রুটি ঘটেছিল।

এখানে একটি workaround হয়। সম্ভবত আপনি কোনও সুরক্ষিত পদ্ধতির সাথে মানগুলি পাচ্ছেন:

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 এখানে আমার ডিফল্ট সময়।


আমার উত্তর সম্পাদনা দেখুন।
ব্যবহারকারীর 487772

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', 
  ));

এটি কাজ করছে না
হেমন্ত সংখলা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.