3

我正在开发 joomla 组件(com_book) 3.0 版。我正在尝试使用表单将书籍插入数据库,在数据库中我有updated_at我正在使用的那一列的列timestamp datatype。当我使用数据库插入和更新书籍并使用表单插入书籍时,这里updated_at的列工作正常,那么它工作正常,但是当我尝试使用时间update_at列不更新的表单更新书籍时。

谁能解释我在这个过程中犯了什么错误?

4

4 回答 4

2

另一种方法是为此创建一个自定义字段,

在您的 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;
    }
}

?>
于 2012-12-25T13:06:28.450 回答
1

将此函数粘贴到您的表的表文件中,例如 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);
}
于 2012-12-25T07:09:13.423 回答
0

Joomla 组件创建器可以构建 Joomla 3.0 组件,让您免于处理此类简单的事情。

看看:http ://www.notwebdesign.com/joomla-component-creator/

一张桌子是免费的。如果没有别的,你可以从那里复制粘贴代码或峰值,看看如何开发自己。

于 2012-12-25T08:40:45.560 回答
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');

如果这不起作用,请告诉我。

于 2012-12-25T07:09:15.583 回答