モジュール作成XOOPSモジュール作成           2012年6月           氷川 霧霞      @kilica on Twitter   http://jp.xoopsdev.com/
モジュールにアクセスしてみるXOOPS_URL/modules/{dirname}/→ 一覧画面が表示される。   class/Module.class.php   {Module}_Module::_getDefaultActionName(...
生成される機能編集(Edit)、削除(Delete)、一覧(List)、詳細(View)•actions/{Table}Delete.class.php•actions/{Table}Edit.class.php•actions/{Table}...
言語ファイルfactoryは、テーブル名やフィールド名を元に最低  限の言語ファイルを生成する。ただし、日本語訳まではしてくれない ^ ^;;language/ja_utf8/main.phpを編集する。(設定関係は modinfo.php, ...
テーブルとハンドラとモデル                               データベーステーブル                                  (MySQL)                ハンドラ       ...
データを扱う(オブジェクトの取得)primary key の値を指定してオブジェクトを取得$handler =Legacy_Utils::getModuleHandler({table}, {dirname});# primary key の値...
データを扱う(オブジェクトの取得)テーブルのデータを全件取得する$handler =Legacy_Utils::getModuleHandler({table}, {dirname});$newsArray = $handler->getObj...
データを扱う(オブジェクトから値を取り出す)$handler =Legacy_Utils::getModuleHandler({table}, {dirname});$newsObject = $handler->get(22);# $news...
データを扱う(データベースの更新)$handler =Legacy_Utils::getModuleHandler({table}, {dirname});$newsObject = $handler->get(22);#オブジェクトにデータを...
データ初期値をセット(1)    データ初期値をセット( )いくつかのフィールドには初期値がセットされる•   uid(ユーザID)•   posttime(投稿日時)固定の値をセットしたい場合は、class/handler/{Table}.c...
データ初期値をセット(2)    データ初期値をセット( )動的な値をセットするex) リクエストの中の値をセットする場合actions/{Table}Edit.class.php{Module}_{Table}EditAction::prep...
テンプレートXOOPS Cube Legacy では Smarty をテンプレー  トエンジンに採用• templates/{module}_{table}_delete.html•   templates/{module}_{table}_e...
ActionForm                                                                 htmlフォーム                                     fo...
入力値検証(Validation)    入力値検証(          )forms/{Table}EditForm.class.php{Module}_{Table}EditFormpublic function prepare(){   ...
モジュールコンフィグ設定xoops_version.php$modversion[config] =   array(    array(         name           =>   default_order,         t...
モジュール設定モジュールの各種設定xoops_version.php•   バージョン、開発者•   テーブル•   テンプレート•   ブロック•   モジュールコンフィグ•   管理画面メニュー
Upcoming SlideShare
Loading in …5
×

XOOPS Cube Conference 2012 Developer Workshop 3

5,006 views

Published on

Published in: Self Improvement, Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
5,006
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
10
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

XOOPS Cube Conference 2012 Developer Workshop 3

  1. 1. モジュール作成XOOPSモジュール作成 2012年6月 氷川 霧霞 @kilica on Twitter http://jp.xoopsdev.com/
  2. 2. モジュールにアクセスしてみるXOOPS_URL/modules/{dirname}/→ 一覧画面が表示される。 class/Module.class.php {Module}_Module::_getDefaultActionName()XOOPS_URL/modules/{dirname}/index.php?action={Table}Edit→ 編集画面が表示されるXOOPS_URL/modules/{dirname}/index.php?action={Table}View&{table}_id=1→ id=1 の詳細画面が表示される
  3. 3. 生成される機能編集(Edit)、削除(Delete)、一覧(List)、詳細(View)•actions/{Table}Delete.class.php•actions/{Table}Edit.class.php•actions/{Table}List.class.php•actions/{Table}View.class.php基本的なURLパラメタ&action={Table}{Action}ex) NewsEdit, PageView, TopicList&{table}_id={n}ex) news_id=2, page_id=123
  4. 4. 言語ファイルfactoryは、テーブル名やフィールド名を元に最低 限の言語ファイルを生成する。ただし、日本語訳まではしてくれない ^ ^;;language/ja_utf8/main.phpを編集する。(設定関係は modinfo.php, 管理画面用は admin.php)
  5. 5. テーブルとハンドラとモデル データベーステーブル (MySQL) ハンドラ データベースとモデルを扱う handler::get() handler::insert() object::get() object::set() モデル object::getShow() (データオブジェクト) フィールド 入力値 の値
  6. 6. データを扱う(オブジェクトの取得)primary key の値を指定してオブジェクトを取得$handler =Legacy_Utils::getModuleHandler({table}, {dirname});# primary key の値が 3 のデータを取得# primary key を引数にして、1件のレコードータをテーブルから取得し、オブジェクトに格納する$newsObject = $handler->get(3); データベーステーブル handler::get() モデル (MySQL) (データオブジェクト)
  7. 7. データを扱う(オブジェクトの取得)テーブルのデータを全件取得する$handler =Legacy_Utils::getModuleHandler({table}, {dirname});$newsArray = $handler->getObjects();category_id が 2 で posttime が1日以上前のデータを取得$handler =Legacy_Utils::getModuleHandler({table}, {dirname});# CriteriaCompo と Criteria を使ってデータの抽出条件を指定する。$criteria = new CriteriaCompo();$criteria->add(new Criteria(category_id, 2));$criteria->add(new Criteria(posttime, time()-24*60*60), <=);$newsArray = $handler->getObjects($criteria); データベーステーブル handler::getObjects() モデル (MySQL) モデル モデル (データオブジェクト) (データオブジェクト) (データオブジェクト)
  8. 8. データを扱う(オブジェクトから値を取り出す)$handler =Legacy_Utils::getModuleHandler({table}, {dirname});$newsObject = $handler->get(22);# $news には、title, content, posttime, uid が格納されているとする$text = $newsObject->getShow(content); //getShow()で取り出した値はエスケープさ れている$uid = $newsObject->get(uid); // get()で取り出した値はエスケープされていない フィールド object::get() モデル の値 object::getShow() (データオブジェクト)
  9. 9. データを扱う(データベースの更新)$handler =Legacy_Utils::getModuleHandler({table}, {dirname});$newsObject = $handler->get(22);#オブジェクトにデータをセットする$newsObject->set(title, サイトリニューアル);$newsObject->set(content, XOOPS Cube 公式サイトがリニューアルしました。);#オブジェクトの中のデータをデータベースに格納する$handler->insert($newsObject); データベーステーブル handler::insert() モデル (MySQL) (データオブジェクト)
  10. 10. データ初期値をセット(1) データ初期値をセット( )いくつかのフィールドには初期値がセットされる• uid(ユーザID)• posttime(投稿日時)固定の値をセットしたい場合は、class/handler/{Table}.class.php{Module}_{Table}Object::__construct()$this->initVar(weight, XOBJ_DTYPE_INT, 50, false);のように initVar() の第3引数に初期値を入れる。
  11. 11. データ初期値をセット(2) データ初期値をセット( )動的な値をセットするex) リクエストの中の値をセットする場合actions/{Table}Edit.class.php{Module}_{Table}EditAction::prepare()public function prepare(){ parent::prepare(); $req = $this->mRoot->mContext->mRequest; if($this->mObject->isNew()){ $this->mObject->set(uid, Legacy_Utils::getUid()); # 値によってはエスケープ $this->mObject->set(category_id, $req- >getRequest(category_id)); }}
  12. 12. テンプレートXOOPS Cube Legacy では Smarty をテンプレー トエンジンに採用• templates/{module}_{table}_delete.html• templates/{module}_{table}_edit.html• templates/{module}_{table}_list.html• templates/{module}_{table}_view.html
  13. 13. ActionForm htmlフォーム forms/{Table}EditForm.class.php load Action MySQL モデル Form update class/handler/{Table}.class.php 送信 templates/{module}_{table}edit.htmlhtmlフォームとのデータのやり取り o フォームからの入力値の保持 o DBの値をフォームに受け渡し入力値検証(Validation)
  14. 14. 入力値検証(Validation) 入力値検証( )forms/{Table}EditForm.class.php{Module}_{Table}EditFormpublic function prepare(){ $this->mFieldProperties[weight] = new XCube_FieldProperty($this); $this->mFieldProperties[weight]- >setDependsByArray(array(required)); $this->mFieldProperties[weight]->addMessage(required, 必須です, 表 示順);}
  15. 15. モジュールコンフィグ設定xoops_version.php$modversion[config] = array( array( name => default_order, title => _MI_XCCK_LANG_DEFAULT_ORDER, description => _MI_XCCK_DESC_DEFAULT_ORDER, formtype => textbox, valuetype => int, default => 8, options => array() ),);コンフィグ値の取得$defaultOrder = XCube_Root::getSingleton()->mContext->mModule- >getModuleConfig(default_order);
  16. 16. モジュール設定モジュールの各種設定xoops_version.php• バージョン、開発者• テーブル• テンプレート• ブロック• モジュールコンフィグ• 管理画面メニュー

×