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?

Wisnu Renku
sumber
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.

Anna Völkl
sumber
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);
}
pengguna487772
sumber
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.

Wisnu Renku
sumber
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.

pengguna3740400
sumber
0

Kamu bisa memakai

$data['ajax_time_interval'] = 120;

di mana $dataadalah array bidang formulir.

$data['{field_name}'] = '{field_name}';
Anshu Mishra
sumber
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', 
  ));
apandey846
sumber
Ini Tidak berfungsi
Hemant Sankhla