ホーム > web, コンピュータ > Xoops Tips アカウント編集画面:項目の追加、削除

Xoops Tips アカウント編集画面:項目の追加、削除

2009 年 7 月 12 日

Xoops Tips アカウント編集画面:項目の追加、削除

photo by ζοιιγ ?нιcα c [ PrincessOfJuly ~ 22/7 ]

ユーザモジュール>テンプレートファイルuser_edituser.htmlを編集

ファイルの場所は、Root\modules\user\templates以下となりますが、このファイルは、Xoops管理画面内、ALTSYSなどから編集して反映させます。

前回までの課程での、データ処理は

  • データ追加
  • データ表示

でしたが、今回は”データ更新”が必要となります。
データ更新は、MySQLに対してSQL文の”Update”を発行する必要があるため、XoopsコアファイルにてUpdate文を編集する必要があります。

アカウント編集画面、項目の削除

削除というか、非表示処理となります。

反映前
アカウント編集画面、項目の削除

今回、初期設定で表示される

  • ICQ
  • AIM
  • YIM
  • MSNM
  • 居住地
  • 職業
  • 趣味

これらの項目を非表示処理することとします。

ICQ項目ならば、user_edituser.html内の該当するHTML部分をコメントアウト、または削除します。

<!--
<tr valign="top">
<td class="head"><{$smarty.const._MD_USER_LANG_USER_ICQ}></td>
<td class="<{cycle values='odd,even'}>"><{$thisUser->getShow('user_icq')}></td>
</tr>

これで、表示されなくなります。

反映後:
アカウント編集画面、項目の削除

アカウント編集画面、項目の追加

前回、アカウント新規登録時に項目を追加した”hoge”項目を表示します。

user_edituser.html内に該当するコードを追加します。
  <tr>
    <td class="head">hoge</td>
    <td class="<{cycle values="odd,even"}>">
      <{xoops_input name=hoge size=30 maxlength=100 value=$actionForm->get('hoge')}>
    </td>
  </tr>
  • HTML input属性 ”name”に追加したい項目名を入力。
  • HTML input属性 ”size”に表示したいサイズを入力。
  • HTML input属性 ”maxlength”に最大文字数を入力。
  • getに追加したい項目名を入力。
変更後

変更後

ここまでの処理では、新規項目”hoge”の入力欄は表示されますが、実際のデータも反映されないし、更新も効きません。

まずは、現在のデータ値を項目欄に表示します。

Root/modeules/user/forms/EditUserForm.class.phpの修正

EditUserForm.class.php内、User_EditUserFormクラス>Function prepare>set propertiesに追加項目を追加。
class User_EditUserForm extends User_AbstractUserEditForm 
{
	function getTokenName()
	{
		return "Module.User.EditUserForm.Token." . $this->get('uid');
	}
	
	/**
	 * TODO The argument of this member property may be moved to constructor.
	 */
	function prepare()
	{
		parent::prepare();
		
		//
		// set properties
		//
		$this->mFormProperties['hoge'] =&amp; new XCube_StringProperty('hoge');
EditUserForm.class.php内、User_EditUserFormクラス>Function loadに項目を追加。
	function load(&amp;$obj)
	{
		$this->set('hoge', $obj->get('hoge'));

この処理で、新規追加項目の”hoge”に格納されている、実際のデータが表示されるようになります。

変更後データが反映されました

変更後データが反映されました

Updateができるよう、編集

EditUserForm.class.php内、User_EditUserFormクラス>Function updateに項目を追加。
$obj->set('hoge', $this->get('hoge'));
Root/kernel/user.phpのUpdate文を修正
Function ”insert”内の

$sql = sprintf(“UPDATE %s SET uname = %s, ~

この一行がUpdate文で、更新時に発行されます。

ここへ、追加項目の、”hoge”がUpdateされるよう追記します。

以上の処理で、アカウント編集画面に追加項目が表示され、編集が可能となります。

関連するエントリー

    None Found

web, コンピュータ , , , ,

  1. コメントはまだありません。
  1. トラックバックはまだありません。