¿Cómo establecer el valor predeterminado para los campos de formulario?


18

Tengo un campo de formulario de administrador (cuadro de texto),

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

Necesito establecer un valor predeterminado para este campo de texto. Lo intenté, estableciéndolo 'value' => '120',. Pero no está funcionando.

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

¿Cómo establecer un valor de defalt en ese campo?


1
Compruebe que no se trata de un problema de caché del navegador. Tengo varias veces, especialmente en Firefox, que está almacenando en caché los últimos valores.
Tobias

55
¿Ha verificado que no está haciendo setValues ​​en el formulario después de la definición del campo? Si lo hace y el objeto utilizado (o la matriz) está vacío, se borran todos los valores.
Petar Dzhambazov

1
@ Peter- ¡Sí! ¡Era el problema ...! Gracias, estaba usando setValues..
Vishnu Renku

Respuestas:


7

¿Se muestra el campo de texto en sí? La configuración me 'value' => '120'parece correcta.


si. se muestra :(
Vishnu Renku

55
@Anna Völkl: tienes razón, pero si el addValues()método se usa después, esos valores se están reescribiendo.
user487772

11

Su problema es que los valores que establece con el addField()método se sobrescriben con el addValues()método que intenta configurar los valores de los campos de un formulario cuando el formulario se usa para editar entidades existentes o se produce un error durante el envío.

Aquí hay una solución alternativa. Lo más probable es que obtenga valores con un método protegido como este:

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

Entonces, dentro de su _prepareForm()método, reemplaza:

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

con:

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

2

Gracias a todos por dedicar su valioso tiempo y esfuerzo. Estaba usando setValues()después addfields. Entonces, los valores predeterminados se estaban borrando.

Lo supero proporcionando un ifbucle, como:

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

120 es mi tiempo predeterminado aquí.


por favor vea la edición de mi respuesta.
user487772

1

Para cualquiera que busque y esté trabajando en 1.9 y tenga lo siguiente

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

Puede hacer lo siguiente sin tener que editar sus datos existentes, justo encima de ese lugar de código:

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

Por supuesto, puede verificar isset y tal, pero aquí está la versión básica de la configuración predeterminada.


0

Puedes usar

$data['ajax_time_interval'] = 120;

donde $dataes una matriz de campos de formulario.

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

0

=> Puede agregar el atributo 'predeterminado' en los campos del formulario. Me gusta esto :

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

No está funcionando
Hemant Sankhla
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.