氷川 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 更新の場合はすでに値がセットされているはずなので、改めてセットしないわけです

トップ   凍結 差分 バックアップ 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom
Counter: 2916, today: 1, yesterday: 1
最終更新: 2008-08-29 (金) 19:34:21 (JST) (3192d) by kilica

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