0

私はJoomlaが初めてです!また、コンポーネント開発も初めてです。

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 ( hello world コンポーネントから作成) を使用して、基本的な作成、編集ページ、および削除アクションを既に作成しているとします。hellow world チュートリアルから、ファイルとフォルダーの構造とコンポーネントのコードについて明確に知ることができましたが、チュートリアルにはテーブルが 1 つしかありませんが、ここには 2 つのテーブルと新しい id id テーブルがあります。

つまり、ここで開発しているコンポーネントには、2 つのサブメニューがあるということです。

編集ページまたは新規ページで

  1. 名前を入力できる詳細ブロックがあります (チュートリアルから実行)。

  2. B を選択して A に追加し、追加した B のリストを表示できる B リンク ブロックがあります。リスト内のすべての項目には、A と B の間のリンクを解除するための削除ボタンまたはリンクがあります。

どうすればいいですか?

ありがとう、よろしく友人、

リシー

4

1 に答える 1

0

最初に、結果を参照テーブルに保存するロジックが必要です。2 番目の部分は、ユーザー側に表示されるデータを取得することです。モデルが必要です:

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

次のステップは、参照テーブルから結果を取得し、正しい結果をフォームに表示するための for を作成するときです。

これは、私が作成したコンポーネントのコード例です。

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();
    }
} 
于 2011-07-06T22:27:24.807 に答える