在开发MVC组件时,我面临以下问题:在保存default.php中发布的数据之前,如果需要,应该修改一些数据。据我所知,特定模型中受保护的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);
}