在开发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);
}