我正在开发 joomla 组件(com_book) 3.0 版。我正在尝试使用表单将书籍插入数据库,在数据库中我有updated_at
我正在使用的那一列的列timestamp datatype
。当我使用数据库插入和更新书籍并使用表单插入书籍时,这里updated_at
的列工作正常,那么它工作正常,但是当我尝试使用时间update_at
列不更新的表单更新书籍时。
谁能解释我在这个过程中犯了什么错误?
我正在开发 joomla 组件(com_book) 3.0 版。我正在尝试使用表单将书籍插入数据库,在数据库中我有updated_at
我正在使用的那一列的列timestamp datatype
。当我使用数据库插入和更新书籍并使用表单插入书籍时,这里updated_at
的列工作正常,那么它工作正常,但是当我尝试使用时间update_at
列不更新的表单更新书籍时。
谁能解释我在这个过程中犯了什么错误?
另一种方法是为此创建一个自定义字段,
在您的 book.xml 表单文件中使用此域代码
<fieldset
addfieldpath="/administrator/components/com_book/models/fields"
>
..
..
<field name="timestamp" type="lastmodified"
label="" description="" />
..
..
</fieldset>
并在 /administrator/components/com_book/models/fields 文件夹中创建一个名为 lastmodified.php 的文件
<?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;
}
}
?>
将此函数粘贴到您的表的表文件中,例如 Joomla-Root/Administrator/com_book/table/book.php 如果已经有一个存储函数,然后编辑它并单独添加这些行,这样就可以完成工作,
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);
}
Joomla 组件创建器可以构建 Joomla 3.0 组件,让您免于处理此类简单的事情。
看看:http ://www.notwebdesign.com/joomla-component-creator/
一张桌子是免费的。如果没有别的,你可以从那里复制粘贴代码或峰值,看看如何开发自己。
在数据绑定后的保存功能中,您可以设置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');
如果这不起作用,请告诉我。