양식 필드의 기본값을 설정하는 방법은 무엇입니까?

관리자 양식 필드 (텍스트 상자)가 있습니다.

$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',그것을 설정하려고 시도 했다. 그러나 작동하지 않습니다.

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

해당 필드에 defalt 값을 설정하는 방법은 무엇입니까?



답변

텍스트 필드 자체가 표시됩니까? 설정 'value' => '120'이 올바른 것 같습니다.


답변

문제는 메소드로 설정 한 값을 기존 엔티티를 편집하는 데 양식이 사용되거나 제출 중에 오류가 발생했을 때 양식 필드 값을 설정하려고 시도하는 메소드 addField()로 겹쳐 써진 다는 것입니다 addValues().

해결 방법은 다음과 같습니다. 아마도 당신은 다음과 같은 보호 된 방법으로 가치를 얻고 있습니다.

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

따라서 _prepareForm()메소드 내부에서 다음 을 대체하십시오.

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

와:

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

답변

소중한 시간과 노력을 보내 주셔서 감사합니다. 나는 setValues()후에 사용하고있었습니다 addfields. 따라서 기본값이 지워졌습니다.

다음 if과 같은 루프 를 제공하여 극복했습니다 .

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

여기서는 120 이 기본 시간입니다.


답변

1.9를 찾고 있고 아래에있는 사람

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

해당 코드 위치 바로 위의 기존 데이터를 편집하지 않고도 다음을 수행 할 수 있습니다.

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

물론 isset 등을 확인할 수 있지만 기본 설정의 기본 버전은 다음과 같습니다.


답변

당신이 사용할 수있는

$data['ajax_time_interval'] = 120;

여기서 $data양식 필드 배열입니다.

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

답변

=> 양식 필드에 ‘default’ 속성을 추가 할 수 있습니다 . 이처럼 :

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