在开发MVC组件时,我面临以下问题:在从default.php保存发布的数据之前,如有必要,应修改一些数据。据我所知,到目前为止,特定模型中受保护的Function prepareTable(& $ table)应该满足我的需要。我从一个非常简单的方法开始,如下所示:
protected function prepareTable(&$table){
$table=$this->getTable();
$table->image="HelloWorld";
}
我的期望是,在提交模板后,我的表中的特定字段现在具有值“HelloWorld”,但事实并非如此。
也许,有人可以给我一个如何处理prepareTable()函数的建议吗?
谢谢
答案 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);
}