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

データバインディング後の保存機能では、設定できます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 に答える
0

Joomla Component Creator を使用すると、Joomla 3.0 コンポーネントをビルドして、このような簡単なことをいじる手間を省くことができます。

見てみましょう: http://www.notwebdesign.com/joomla-component-creator/

1テーブル無料です。他に何もない場合は、それまたはピークからコードをコピーして貼り付け、自分で開発する方法を確認できます。

于 2012-12-25T08:40:45.560 に答える