2011-04-01 4 views
0

나는 Joomla!를 처음 사용했습니다! 또한 구성 요소 개발에 새로운 기능이 추가되었습니다.joomla 1.6, 구성 요소 : m2m이있는 테이블과 편집 페이지의 목록을 연결하는 구성 요소를 만드는 방법은 무엇입니까?

2 개의 테이블을 연결할 수있는 구성 요소를 만들고 싶습니다.

의 joomla V 1.6 :

테이블의 구조 :

CREATE TABLE `#__a` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(255) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 

B 테이블의 구조 :

CREATE TABLE `#__b` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`name` varchar(255) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 

AB 테이블의 구조 :

CREATE TABLE `#__ab` (
`id` int(11) NOT NULL AUTO_INCREMENT, 
`id_a` int(11) NOT NULL, 
`id_b` int(11) NOT NULL, 
PRIMARY KEY (`id`) 
) ENGINE=MyISAM AUTO_INCREMENT=0 DEFAULT CHARSET=utf8; 

우리가 이미 가지고 있다고 가정 만들어진 A와 B에 대한 MVC (created from the hello world component)의 기본 생성, 편집 페이지 및 삭제 동작. 헬로우 월드 튜토리얼에서 우리는 파일과 폴더 구조 및 구성 요소의 코드에 대해 명확하게 알 수 있지만 튜토리얼에는 오직 하나의 테이블 만 있지만 여기에는 2 개의 테이블과 새로운 ID ID 테이블이 있습니다.

그래서 여기서 개발중인 구성 요소에는 2 개의 하위 메뉴가 있음을 의미합니다. 편집하거나 새로운 페이지에서

  1. 세부 항목은 우리가 이름을 채울 수있는 차단할 수있다. (튜토리얼에서 수행) 우리는 B를 선택할 수 있습니다 B의 연결 블록이

  2. 있다 (옵션을 선택하고 1을 초과하여 선택할 수 있음) 에 추가하고 우리가 추가 한 B 목록을 표시합니다. 목록에있는 모든 항목에서, A와 B.

모든 아이디어를 어떻게하십시오 수행하는 사이에 연결을 해제 할 수있는 삭제 버튼 또는 링크가?

감사와 안부 친구,

리티

답변

0

먼저 당신은 참조 테이블에 결과를 저장하고 두 번째 부분은 사용자 측에 표시 할 데이터를 검색하는 것입니다 몇 가지 논리가 필요합니다. 당신이 만들 때

class CompControllerA extends JControllerForm { 
    // Here put your save code 
    //.... 
    function save() { 
    $formData = JRequest::getVar('jform'); 
    $bRecords = $formData['bRecords']; 
    $aRecordId = $formData['id']; 
    $referenceModel->delete($aRecordId); // Delete all records that has same ID as current record 
    foreach($bRecords as $row) { 
     $data['id']=0; 
     $data['a_id']=$aRecordId; 
     $data['b_id']=(int)$row; 
     $bModel->save($data); 
    } 

    // dont forget to call parent method 
    parent::save(); 
    } 
} 

다음 단계 인 단지 참조 테이블에서 결과를 가지고 형태로 올바른 결과를 보여 위해 : 당신은 모델이 필요합니다.

다음은 내가 작성한 구성 요소의 일부 예제 코드입니다.

class IbookModelExtra extends JModelAdmin 
{ 
    protected function loadFormData() 
    { 
     $db =& $this->getDbo(); 
     $query = $db->getQuery(true); 
     $query->select('b_id')->from('#__table_a_b')->where('a_id='.$data->id); 
     $db->setQuery((string)$query); 
     $data->b = $db->loadResultArray(); 
    } 
} 
관련 문제