Joomla 2.5 MVC Model prepareTable函数

时间:2013-08-26 10:33:42

标签: php mysql joomla joomla2.5 joomla-component

在开发MVC组件时,我面临以下问题:在从default.php保存发布的数据之前,如有必要,应修改一些数据。据我所知,到目前为止,特定模型中受保护的Function prepareTable(& $ table)应该满足我的需要。我从一个非常简单的方法开始,如下所示:

protected function prepareTable(&$table){

$table=$this->getTable();

$table->image="HelloWorld";

}

我的期望是,在提交模板后,我的表中的特定字段现在具有值“HelloWorld”,但事实并非如此。

也许,有人可以给我一个如何处理prepareTable()函数的建议吗?

谢谢

1 个答案:

答案 0 :(得分:2)

如果其他所有内容都设置正确,prepareTable(&$table)方法已经将表对象传入其中。

通常,您的班级中的prepareTable()不会getTable(),因为您替换了已经绑定了行数据的$table。通过替换它,您可以有效地与已经完成的工作分离。

我会删除你的方法的那一行:

protected function prepareTable(&$table){

    $table->image="HelloWorld";

}

如果你看一下Joomla核心文件中prepareTable()的最简单实现,在com_banners中你会看到与你的方法非常相似的东西;

/**
 * Prepare and sanitise the table data prior to saving.
 *
 * @param   JTable  A JTable object.
 * @since   1.6
 */
protected function prepareTable(&$table)
{
    $table->name = htmlspecialchars_decode($table->name, ENT_QUOTES);
}