Bagaimana cara menetapkan nilai default untuk bidang formulir?


18

Saya memiliki bidang formulir admin (kotak teks),

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

Saya perlu menetapkan nilai default untuk bidang teks ini. Saya mencoba, pengaturan 'value' => '120',di dalamnya. Tapi itu tidak berfungsi.

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

Bagaimana cara menetapkan nilai defalt di bidang itu?


1
Periksa apakah ini bukan masalah cache browser. Saya memiliki waktu serveral ini, terutama di Firefox, yang merupakan caching nilai terbaru.
Tobias

5
Sudahkah Anda memverifikasi bahwa Anda tidak melakukan setValues ​​pada formulir setelah definisi bidang? Jika Anda melakukannya dan objek yang digunakan (atau array) kosong, maka semua nilai dihapus.
Petar Dzhambazov

1
@ Peter- Yess! Itu masalahnya ...! Terima kasih, saya menggunakan setValues..
Wisnu Renku

Jawaban:


7

Apakah bidang teks itu sendiri ditampilkan? Pengaturannya 'value' => '120'sepertinya benar bagi saya.


Iya. itu ditampilkan. :(
Wisnu Renku

5
@Anna Völkl: Anda benar tetapi jika addValues()metode digunakan setelah itu nilai-nilai tersebut sedang ditulis ulang.
user487772

11

Masalah Anda adalah bahwa nilai-nilai yang Anda tetapkan dengan addField()metode kemudian ditimpa dengan addValues()metode yang mencoba untuk mengatur nilai-nilai bidang formulir ketika formulir digunakan untuk mengedit entitas yang ada atau kesalahan terjadi selama pengiriman.

Ini solusinya. Kemungkinan besar Anda mendapatkan nilai dengan metode yang dilindungi seperti ini:

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;
}

Jadi di dalam _prepareForm()metode Anda, Anda ganti:

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

dengan:

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

2

Terima kasih semuanya telah menghabiskan waktu dan usaha Anda yang berharga. Saya Menggunakan setValues()setelah addfields. Jadi nilai default sedang dihapus.

Saya mengatasinya dengan memberikan ifloop, seperti:

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

120 adalah waktu default saya di sini.


silakan lihat hasil edit jawaban saya.
user487772

1

Bagi siapa pun yang mencari dan bekerja di 1.9 dan memiliki di bawah ini

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

Anda dapat melakukan hal berikut tanpa harus mengedit data yang ada, tepat di atas tempat kode:

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

Tentu saja Anda dapat memeriksa isset dan semacamnya tetapi di sini adalah versi dasar dari pengaturan default.


0

Kamu bisa memakai

$data['ajax_time_interval'] = 120;

di mana $dataadalah array bidang formulir.

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

0

=> Anda dapat menambahkan atribut 'default' di bidang formulir. Seperti ini :

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

Ini Tidak berfungsi
Hemant Sankhla
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.