我终于成功了。因为我花了很多时间在这上面,发现很多人都在寻找答案,这就是我的做法。
我想您知道如何使用标准 MVC 结构创建组件:
- 组件入口点
- 组件控制器
- 最终组件路由器
- 组件视图
- 组件型号
- 组件控制器
在 model components\my_component\models\my_model.php创建你自己的保存函数
public function save($data)
{
// Initialise variables.
$userId = (!empty($data['id'])) ? $data['id'] : (int)$this->getState('user.id');
$user = JFactory::getUser();
$table_one = $this->getTable('TableOne', 'MyComponentTable', array());
$table_two = $this->getTable('TableTwo', 'MyComponentTable', array());
// Bind the data.
if (!$table_one->bind($data))
{
$this->setError(JText::sprintf('USERS PROFILE BIND FAILED', $user->getError()));
return false;
}
if (!$table_two->bind($data))
{
$this->setError(JText::sprintf('USERS PROFILE BIND FAILED', $user->getError()));
return false;
}
// Store the data.
if (!$table_one->save($data))
{
$this->setError($user->getError());
return false;
}
if (!$table_two->save($data))
{
$this->setError($user->getError());
return false;
}
return $user->id;
}
当然需要在save函数中调用getTable函数
public function getTable($type = 'TableOne', $prefix = 'MyComponentTable', $config = array())
{
// call the administrator\components\com_mycomponent\tables\__tablename__.php
$this->addTablePath(JPATH_COMPONENT_ADMINISTRATOR . '/tables');
return JTable::getInstance($type, $prefix, $config);
}
它有效!很简单!当然,正如我在问题中所说,整个 $data 被发送到父 save() 函数,以使用 table_one 或 table_two 不需要的数据。它以这种方式与标准的 joomla 结构一起工作(代码中没有 hack 或直接查询)。
希望能帮助到你。