Form alanları için varsayılan değer nasıl ayarlanır?


18

Yönetici formu alanım (metin kutusu) var,

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

Bu metin alanı için varsayılan bir değer ayarlamam gerekiyor. Bunu denedim, denedim 'value' => '120',. Ama işe yaramıyor.

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

Bu alanda bir defalt değeri nasıl ayarlanır?


1
Tarayıcı önbellek sorunu olmadığını kontrol edin. Bu servis zamanlarım var, özellikle de en son değerleri önbelleğe alan Firefox'ta.
Tobias

5
Alan tanımından sonra form üzerinde setValues ​​yapmadığınızı doğruladınız mı? Bunu yaparsanız ve kullanılan nesne (veya dizi) boşsa, tüm değerler silinir.
Petar Dzhambazov

1
@ Peter- Yess! Sorun buydu ...! Teşekkürler, kullanıyordum setValues..
Vishnu Renku

Yanıtlar:


7

Metin alanının kendisi mi görüntüleniyor? Ayar 'value' => '120'benim için doğru görünüyor.


Evet. görüntülenir. :(
Vishnu Renku

5
@Anna Völkl: haklısınız, ancak addValues()daha sonra yöntem kullanılırsa bu değerler yeniden yazılıyor .
user487772

11

Sorununuz, addField()yöntemle ayarladığınız değerlerin üzerine, addValues()form varolan öğeleri düzenlemek için kullanıldığında veya gönderme sırasında hata oluştuğunda bir form alanı değerleri ayarlamaya çalışan yöntemle üzerine yazılmasıdır .

İşte bir çözüm. Büyük olasılıkla böyle bir korumalı yöntemle değerler alıyorsunuz:

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

Yani _prepareForm()yönteminizin içinde şunları değiştirirsiniz:

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

ile:

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

2

Değerli zamanınızı ve çabalarınızı harcadığınız için herkese teşekkürler. Ben Kullanılması oldu setValues()sonra addfields. Böylece varsayılan değerler siliniyordu.

Bunun ifgibi bir döngü sağlayarak üstesinden geldim :

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

120 benim varsayılan zamanım.


lütfen cevabımın düzenlemesine bakın.
user487772

1

1.9 üzerinde çalışan ve çalışan herkes için ve aşağıdakilere sahip

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

Bu kod yerinin hemen üzerinde mevcut verilerinizi düzenlemek zorunda kalmadan aşağıdakileri yapabilirsiniz:

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

Elbette isset ve benzerlerini kontrol edebilirsiniz, ancak burada varsayılan ayarların temel sürümü bulunmaktadır.


0

Kullanabilirsiniz

$data['ajax_time_interval'] = 120;

burada $databir form alanı dizisidir.

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

0

=> Form alanlarına 'varsayılan' özellik ekleyebilirsiniz . Bunun gibi :

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

Çalışmıyor
Hemant Sankhla
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.