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

protected function prepareTable(&$table){

$table=$this->getTable();

$table->image="HelloWorld";

}


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

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

谢谢

最佳答案

如果其他所有设置都正确,则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);
}

09-25 19:57