Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
モジュール作成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,066 views

Published on

Published in: Self Improvement, Technology
  • Be the first to comment

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• バージョン、開発者• テーブル• テンプレート• ブロック• モジュールコンフィグ• 管理画面メニュー

×