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


18

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

$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 값을 설정하는 방법은 무엇입니까?


1
브라우저 캐시 문제가 아닌지 확인하십시오. 이 서버 시간, 특히 Firefox에서는 최신 값을 캐싱합니다.
Tobias

5
필드 정의 후 양식에서 setValues를 수행하고 있지 않은지 확인 했습니까? 사용하고 사용 된 객체 (또는 배열)가 비어 있으면 모든 값이 지워집니다.
Petar Dzhambazov

1
@ Peter- 예! 문제였습니다 ...! 덕분에, 내가 사용하고 있었다 setValues..
비슈누 Renku

답변:


7

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


예. 표시됩니다. :(
Vishnu Renku

5
@Anna Völkl : 맞습니다.하지만 addValues()나중에 방법을 사용 하면 해당 값을 다시 씁니다 .
user487772

11

문제는 메소드로 설정 한 값을 기존 엔티티를 편집하는 데 양식이 사용되거나 제출 중에 오류가 발생했을 때 양식 필드 값을 설정하려고 시도하는 메소드 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);
}

2

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

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

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

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


내 답변 편집을 참조하십시오.
user487772

1

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

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

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

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

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


0

당신이 사용할 수있는

$data['ajax_time_interval'] = 120;

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

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

0

=> 양식 필드에 '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', 
  ));

작동하지 않습니다
Hemant Sankhla
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.