我正在研究joomla组件(com_book)3.0版。我试图使用 form 将书籍插入数据库,在数据库中,我正在使用updated_at
列,我正在使用{{1 }}。当我使用数据库插入和更新图书以及使用表单插入图书时,timestamp datatype
列工作正常,然后它工作正常,但是当我尝试使用时间updated_at
列不更新的表单更新图书时。
有谁可以解释我在这个过程中犯了什么错误?
答案 0 :(得分:2)
另一种方法是为其创建自定义字段,
在book.xml表单文件中使用此字段代码
<fieldset
addfieldpath="/administrator/components/com_book/models/fields"
>
..
..
<field name="timestamp" type="lastmodified"
label="" description="" />
..
..
</fieldset>
并创建一个名为lastmodified.php的文件 在/ administrator / components / com_book / models / fields文件夹中
<?php
defined('JPATH_BASE') or die;
jimport('joomla.form.formfield');
/**
* Supports an HTML form field
*/
class JFormFieldLastModified extends JFormField
{
/**
* The form field type.
*
* @var string
* @since 1.6
*/
protected $type = 'lastmodified';
/**
* Method to get the field input lastmodified.
*
*/
protected function getInput()
{
// Initialize variables.
$html = array();
$old_time_updated = $this->value;
if ($old_time_updated) {
$jdate = new JDate($old_time_updated);
$pretty_date = $jdate->format(JText::_('DATE_FORMAT_LC2'));
}
$time_updated = date("Y-m-d H:i:s");
$html = '<input type="hidden" name="'.$this->name.'" value="'.$time_updated.'" />';
return $html;
}
}
?>
答案 1 :(得分:1)
将此函数粘贴到表格的表文件中,例如 的Joomla根/管理员/ com_book /表/ book.php中 如果已经有商店功能,那么编辑它并单独添加这些行man,这将完成工作,
public function store($updateNulls = false)
{
$date = JFactory::getDate();
// this is your primary key maybe id or book_id
if ($this->book_id) {
// Assigning the last modified date to your timestamp field
$this->timestamp = $date->toSql();
}
// Attempt to store the user data. - just leave the rest to parent function
return parent::store($updateNulls);
}
答案 2 :(得分:0)
在数据绑定后的保存功能中,您可以设置updated_at
// Bind the data to the table
if (!$table->bind($post))
{
//display error
}
//after binding write this line-
$table->updated_at = date('Y-m-d H:i:s');
如果这不起作用,请告诉我。
答案 3 :(得分:0)
Joomla Component Creator可以构建Joomla 3.0组件,并且可以避免弄乱像这样简单的东西。
看看:http://www.notwebdesign.com/joomla-component-creator/
一张桌子免费。如果没有别的,你可以从那个或高峰复制粘贴代码,看看如何自己开发。