_prepareForm() 메서드에서 다중 선택 항목에 추가 할 필드의 'value'특성으로 선택 될 ID의 배열을 전달하면됩니다. 다음과 같은 것.
$fieldset->addField('category_id', 'multiselect', array(
'name' => 'categories[]',
'label' => Mage::helper('cms')->__('Store View'),
'title' => Mage::helper('cms')->__('Store View'),
'required' => true,
'values' => Mage::getSingleton('mymodule/mymodel')->getMymodelValuesForForm(),
'value' => array(1,7,10),
));
폼 요소의 ID (예 : CATEGORY_ID) 형태의 값은 나중에, 속성 값을 덮어 쓰게됩니다 $ 형상 -> setValues ()로 설정 얻을, 그렇지 않은 경우, 모델의 속성이 아니어야합니다 .
대개 대부분의 마젠타 모듈이 상점을 처리하는 것처럼 여러 개의 선택 항목을 쉼표로 구분 된 텍스트 열로 저장합니다. 아래 그림과 같이 약간 다른 접근 방식이 필요합니다.
다중 선택이있는 탭의 양식 블록에서 먼저 _prepareForm() 메소드에서와 같이 표시 할 요소를 정의합니다. 그런 다음 모델에서 값을 가져 와서 양식 데이터에 넣습니다.
protected function _prepareForm()
{
...
$fieldset->addField('store_id', 'multiselect', array(
'name' => 'stores[]',
'label' => Mage::helper('cms')->__('Store View'),
'title' => Mage::helper('cms')->__('Store View'),
'required' => true,
'values' => Mage::getSingleton('adminhtml/system_store')->getStoreValuesForForm(false, true),
));
...
if (Mage::getSingleton('adminhtml/session')->getMymodelData())
{
$data = Mage::getSingleton('adminhtml/session')->getMymodelData();
} elseif (Mage::registry('mymodel_data')) {
$data = Mage::registry('mymodel_data')->getData();
}
$data['store_id'] = isset($data['stores']) ? explode(',', $data['stores']) : array();
$form->setValues($data);
}
I은 일반적 따라서 폭발, ID의 텍스트 컬럼 쉼표로 구분 된 값으로서 기본 모델에서 선택한 점포 (카테고리 귀하의 경우)를 저장한다.
편집 작업용 컨트롤러에서 편집중인 모델을 마법사 레지스트리에 저장하여로드 할 수 있도록하고 위의 단계에서 값을 입력합니다.
Mage::register('mymodel_data', $model);
이 매우 좋다 . –