我是乔姆拉的新手!对组件开发也是新的。
我想要创建一个组件,它能够在两个表之间链接。
joomla诉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;假设我们已经使用MVC for A和B (从hello world组件创建)创建了基本的创建、编辑页面和删除操作。从hellow教程中,我们可以清楚地了解文件和文件夹结构以及组件的代码,但是在本教程中只有一个表,但是这里有两个表和新的id表。
这意味着在我们正在开发的组件中,有两个子菜单。
在“编辑或新”页中。
有什么好办法吗?
感谢和最诚挚的朋友们,
瑞茜
发布于 2011-07-06 22:27:24
首先,您需要一些逻辑来保存引用表中的结果,第二部分是检索要显示在用户端的数据。你需要一个模特:
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();
}
} https://stackoverflow.com/questions/5512184
复制相似问题