2007年8月3日(金曜日)

一度に複数のテーブルを更新するモジュール 龍司の場合

カテゴリー: - Ryuji @ 23時26分31秒

氷川 XOOPS Module 開発室 一度に複数のテーブルを更新するモジュール
にて、cubson が生成する ActionForm をそのまま利用する形での実装方法が紹介されています。

私はこれとは違う方法でやっていたので、私のやり方をちょっと紹介。

ActionForm は、入力値の受け渡しに使う物とわりきって、複数テーブルを更新するケースなら、複数テーブルの項目をひとつにした ActionForm をつくってしまいます。
このとき作成する ActionForm にテーブル分だけ、load と update メソッドを用意します。

Action 側は、_setupObject メソッドで、複数テーブルのデータ読み込みと Object 作成を行います。
getDefaultView と execute で複数テーブル分 load,update を行うようにします。
# データの関連の仕方によっては、$this->mObject に関連 Object を持たせるようにすることもあります。この場合、getDefaultView と execute メソッドには変更なし。

_doExecute で更新処理が行われるので、ここで複数テーブル分更新をかけます。

複数テーブルを同時に更新する必要があるケースは多いので、最近は AbstractEditAction を下記のように書き換えて、 ActionForm への load,update はサブクラスでオーバーライドできるようにしています。


	function _actionFormLoadTarget()
	{
	    $this->mActionForm->load($this->mObject);
	}
	function getDefaultView()
	{
		if ($this->mObject == null) {
			return HOGE_FRAME_VIEW_ERROR;
		}

$this->_actionFormLoadTarget();

return HOGE_FRAME_VIEW_INPUT; }

こうしておいて実際の更新をする Action で下記のようにしています。


	function _actionFormLoadTarget()
	{
	    $this->mActionForm->load($this->mObject);
	    $this->mActionForm->loadFoo($this->mFoo);
	}

このやり方だと、書き換えるファイル数が多くなってしまうので、
氷川 XOOPS Module 開発室 一度に複数のテーブルを更新するモジュール で紹介されている方法も一度試してみたいと思います。


RSS feed for comments on this post.

ƤˤϡޤȤդƤޤ

Ȥ

ʤߥȤդ뤳ȤϽޤ

10 queries. 0.010 sec.
Powered by WordPress Module based on WordPress ME & WordPress

〒104-0061 東京都中央区銀座1丁目3番3号 G1ビル7階
お問い合わせ TEL 03-3524-8860

Copyright(c) 2012 RYUS.All Rights Reserved.