Question

I ai un champ de formulaire d'administration (encadré),

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

Je dois définir une valeur par défaut de ce champ de texte. J'ai essayé, la mise 'value' => '120', en elle. Mais sa ne fonctionne pas.

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

Comment définir une valeur defalt dans ce domaine?

Était-ce utile?

La solution

Le champ de texte s'affiche? Le réglage 'value' => '120' semble correct pour moi.

Autres conseils

Votre problème est que les valeurs que vous définissez avec la méthode addField() sont ensuite écrasées avec la méthode addValues() qui tente de mettre en place une forme de valeurs de champs lorsque le formulaire est utilisé pour modifier les entités existantes ou erreur est survenue lors de la soumission.

Voici une solution de contournement. Très probablement, vous obtenez des valeurs avec une méthode protégée comme ceci:

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

à l'intérieur de votre méthode de _prepareForm() vous remplacez:

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

avec:

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

Merci tout le monde pour passer votre temps précieux et d'efforts. J'utilisais setValues() après addfields. Ainsi, les valeurs par défaut ont été effacées.

je surmonter cela en fournissant une boucle de if, tels que:

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

120 est mon temps par défaut ici.

Pour ceux qui cherchent et travaillent à 1,9 et ont le ci-dessous

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

Vous pouvez faire ce qui suit sans avoir à modifier vos données existantes, juste au-dessus du lieu code:

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

Bien sûr, vous pouvez vérifier isset et tel, mais voici la version de base par défaut de réglage.

Vous pouvez utiliser

$data['ajax_time_interval'] = 120;

$data est un tableau de champs de formulaire.

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

=> Vous pouvez ajouter 'default' attribut dans les champs de formulaire. Comme ceci:

        $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', 
  ));
Licencié sous: CC-BY-SA avec attribution
Non affilié à magento.stackexchange
scroll top