2013-10-02 4 views
0

저는 현재 직원 목록을 작성하려는 magento 용 사용자 정의 모듈을 개발 중입니다.Magento Admin formfield multiselect selected

나는 거의 모든 것을 알아 냈습니다. 내가 남긴 유일한 것은 선택한 값이 어떻게 강조 될 것인가입니다.

내가 가지고있는 문제는 백엔드 때문입니다.

직원 당 2 개의 탭이 있습니다. 하나는 직원 데이터 용이고 다른 하나는 magento 카테고리 용 탭입니다.

직원이 1 명 이상일 수 있습니다.

범주가 저장된 데이터베이스 테이블은 비 eav 테이블입니다.

제 질문은 입니다. 어떤 값을 선택하면 다중 선택으로 결정됩니까? 현재와 ​​같이 하나의 값만 선택됩니다.

답변

7

_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); 
+2

이 매우 좋다 . –

2

답해 주셔서 감사합니다.

$fieldset->addField('npn_CatID', 'multiselect', array(
      'label' => Mage::helper('employeelist')->__('Kategori'), 
      'class' => 'required-entry', 
      'required' => true, 
      'name'  => 'npn_CatID', 
      'values' => $data, 
      'value' => array(3,5) 
     )); 

npn_CatID이 카테고리 ID가 저장됩니다 내 DB에있는 값입니다

이처럼 내 필드 모습입니다. 이름과 필드 ID를 변경하려고 시도했지만 작동하지 않습니다. 의 id 필드는 하나의 값을 선택하고 마지막 하나는

내 데이터 배열 보이는 선택한 직원에 대한 삽입 위에처럼 좋아하는 때 당신이 애슐리 Swatton의 답변을 받아 들여야 @cpuweb

array(array('value' => '1', 'label' => 'USB'), array('value' => '2', 'label' => 'Memories'))