Làm cách nào để đặt giá trị mặc định cho các trường biểu mẫu?


18

Tôi có một trường mẫu quản trị (hộp văn bản),

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

Tôi cần đặt một giá trị mặc định cho trường văn bản này. Tôi đã thử, thiết lập 'value' => '120',trong đó. Nhưng nó không hoạt động.

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

Làm cách nào để đặt giá trị defalt trong trường đó?


1
Kiểm tra xem đó không phải là vấn đề bộ đệm của trình duyệt. Tôi có thời gian máy chủ này, đặc biệt là trong Firefox, đang lưu trữ các giá trị mới nhất.
Tobias

5
Bạn đã xác minh rằng bạn không thực hiện setValues ​​trên biểu mẫu sau khi xác định trường? Nếu bạn làm và đối tượng được sử dụng (hoặc mảng) trống, thì tất cả các giá trị sẽ bị xóa.
Petar Dzhambazov

1
@ Peter- Vâng! Đó là vấn đề ...! Cảm ơn, tôi đã sử dụng setValues..
Vishnu Renku

Câu trả lời:


7

Là trường văn bản chính nó được hiển thị? Các thiết lập 'value' => '120'có vẻ đúng với tôi.


Vâng. nó được hiển thị :(
Vishnu Renku

5
@Anna Völkl: bạn đúng nhưng nếu addValues()phương thức được sử dụng sau đó thì các giá trị đó sẽ được viết lại.
dùng487772

11

Vấn đề của bạn là các giá trị bạn đặt bằng addField()phương thức sau đó được ghi đè bằng addValues()phương thức cố gắng thiết lập giá trị trường biểu mẫu khi biểu mẫu được sử dụng để chỉnh sửa các thực thể hiện có hoặc xảy ra lỗi trong khi gửi.

Đây là một cách giải quyết. Nhiều khả năng bạn đang nhận được các giá trị với một phương thức được bảo vệ như thế này:

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

Vì vậy, bên trong _prepareForm()phương pháp của bạn, bạn thay thế:

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

với:

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

2

Cảm ơn mọi người đã dành thời gian và công sức quý báu của bạn. Tôi đã sử dụng setValues()sau addfields. Vì vậy, các giá trị mặc định đã được xóa.

Tôi khắc phục nó bằng cách cung cấp một ifvòng lặp, chẳng hạn như:

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

120 là thời gian mặc định của tôi ở đây.


xin vui lòng xem chỉnh sửa để trả lời của tôi.
dùng487772

1

Đối với bất cứ ai tìm kiếm và đang làm việc trên 1.9 và có những điều dưới đây

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

Bạn có thể làm như sau mà không cần phải chỉnh sửa dữ liệu hiện có của mình, ngay phía trên vị trí mã đó:

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

Tất nhiên bạn có thể kiểm tra ngay lập tức và như vậy nhưng đây là phiên bản cơ bản của cài đặt mặc định.


0

Bạn có thể dùng

$data['ajax_time_interval'] = 120;

trong đó $datalà một mảng của các trường mẫu.

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

0

=> Bạn có thể thêm thuộc tính 'mặc định' trong các trường mẫu. Như thế này :

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

Nó không hoạt động
Hemant Sankhla
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.