How to set default value for form fields?
-
16-10-2019 - |
سؤال
I have an admin form field(textbox),
$fieldset->addField('ajax_time_interval', 'text', array(
'label' => Mage::helper('dealroom')->__('Page Refresh Time Interval'),
'class' => 'required-entry',
'required' => true,
'name' => 'ajax_time_interval',
));
I need to set a default value for this text field. I tried, setting 'value' => '120',
in it. But its not working.
$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',
));
How to set a defalt value in that field?
المحلول
Is the textfield itself displayed?
The setting 'value' => '120'
seems correct to me.
نصائح أخرى
Your problem is that values you set with addField()
method are then overwritten with addValues()
method which tries to set up a form fields values when form is used for editing existing entities or error occurred during submission.
Here is a workaround. Most likely you are getting values with a protected method like this:
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;
}
So inside of your _prepareForm()
method you replace:
$form->addValues($this->_getFormData());
with:
$_data = $this->__getFormData();
if (!empty($_data)) {
$form->addValues($_data);
}
Thanks everybody for spending your valuable time and effort. I was Using setValues()
after addfields
. So the default values were being cleared.
I overcome it by providing an if
loop, such as:
if (Mage::registry('dealroom_data')->getAjaxTimeInterval() < 0 || Mage::registry('dealroom_data')->getAjaxTimeInterval() == "") {
Mage::registry('dealroom_data')->setAjaxTimeInterval(120);
}
120 is my default time here.
For anyone looking and are working on 1.9 and have the below
if($model){
$form->setValues($model->getData());
}
You can do the following without having to edit your existing data, just above that code place:
if($model->getData('fieldName') == ""){
$model->setData('fieldName', "yourValue");
}
Of course you can check isset and such but here is the basic version of setting defaults.
You can use
$data['ajax_time_interval'] = 120;
where $data
is an array of form fields.
$data['{field_name}'] = '{field_name}';
=> You can add 'default' attribute in form fields. Like this :
$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',
));