氷川 XOOPS 研究室

モジュール制作、ウェブサービスなどなど

続・モジュールを作ろう!(3)新規登録時の初期値をセット anchor.png

Page Top

こんなときに使います anchor.png

新規にデータを登録する際、登録者のユーザIDを一緒に記録することがよくありますが、そのIDは、ユーザに入れてもらうわけではもちろんなく、サーバ側で自動でセットすべきでしょう。

そのような場合に、actions/XxxEditForm.class.php に以下のサンプルようなコードを入れます。

Page Top

サンプルコード anchor.png

actions/XxxEditForm.class.php

function prepare()
{
  parent::prepare();

  if ($this->mObject->isNew()) {
    $this->mObject->set('uid', $this->mRoot->mContext->mXoopsUser->get('uid'));
  }
}
Page Top

解説 anchor.png

actions/XxxEditAction.class.php に prepare() メソッドを追加し、その中に初期値をセットするコードを書きます。その際、先頭に parent::prepare(); を忘れずに。

prepare() メソッドは、親クラスである class/AbstructEditAction.class.php で規定されています。parent::prepare(); は、その AbstructEditAction.class.php の prepare() メソッドを呼び出します。

$this->_setupObject();
$this->_setupActionForm();

の2行ですね。

その次、mObject の isNew() メソッドでは、新規登録か更新かを判断しています。Cubson の生成コードでは、リクエスト時にプライマリキー(xxx_id とか)が渡されていれば更新、そうでなければ新規登録扱いになります*1

次の行の set() メソッドでユーザID(uid)をセットしています。

$this->mRoot->mContext->mXoopsUser->get('uid')

は、XOOPS Cube でログインしているユーザ自身の uid を取得するお決まりのコードです。

そのほか、GET で渡された引数を xoops_getrequest() メソッドで取り出してセットする、などがよく使われます。

$this->mObject->set('cat_id', xoops_getrequest('cat_id'));

とか。


*1 更新の場合はすでに値がセットされているはずなので、改めてセットしないわけです

Front page   Freeze Diff Backup Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 3925, today: 1, yesterday: 0
Last-modified: 2008-08-29 (Fri) 19:34:21 (JST) (3945d) by kilica

Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project - xc-tokai