SlideShare uma empresa Scribd logo
1 de 16
Baixar para ler offline
モジュール作成
XOOPSモジュール作成
           2012年6月
           氷川 霧霞
      @kilica on Twitter
   http://jp.xoopsdev.com/
モジュールにアクセスしてみる
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 の詳細画面が表示される
生成される機能
編集(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
言語ファイル
factoryは、テーブル名やフィールド名を元に最低
  限の言語ファイルを生成する。
ただし、日本語訳まではしてくれない ^ ^;;

language/ja_utf8/main.php
を編集する。
(設定関係は modinfo.php, 管理画面用は admin.php)
テーブルとハンドラとモデル

                               データベーステーブル
                                  (MySQL)                ハンドラ
                                                         データベースとモデルを扱う




                     handler::get()      handler::insert()




 object::get()                                               object::set()
                                  モデル
 object::getShow()
                                  (データオブジェクト)



     フィールド
                                                                 入力値
     の値
データを扱う(オブジェクトの取得)
primary key の値を指定してオブジェクトを取得
$handler =Legacy_Utils::getModuleHandler('{table}', '{dirname}');
# primary key の値が 3 のデータを取得
# primary key を引数にして、1件のレコードータをテーブルから取得し、オブジェクトに格納する
$newsObject = $handler->get(3);




  データベーステーブル                 handler::get()              モデル
     (MySQL)
                                                         (データオブジェクト)
データを扱う(オブジェクトの取得)
テーブルのデータを全件取得する
$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)                                              モデル
                                                           モデル
                                                         (データオブジェクト)
                                                          (データオブジェクト)
                                                           (データオブジェクト)
データを扱う(オブジェクトから値を取り出す)
$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()          (データオブジェクト)
データを扱う(データベースの更新)
$handler =Legacy_Utils::getModuleHandler('{table}', '{dirname}');
$newsObject = $handler->get(22);



#オブジェクトにデータをセットする
$newsObject->set('title', 'サイトリニューアル');
$newsObject->set('content', 'XOOPS Cube 公式サイトがリニューアルしました。');



#オブジェクトの中のデータをデータベースに格納する
$handler->insert($newsObject);




  データベーステーブル                handler::insert()            モデル
     (MySQL)
                                                         (データオブジェクト)
データ初期値をセット(1)
    データ初期値をセット( )
いくつかのフィールドには初期値がセットされる
•   uid(ユーザID)
•   posttime(投稿日時)


固定の値をセットしたい場合は、
class/handler/{Table}.class.php
{Module}_{Table}Object::__construct()
$this->initVar('weight', XOBJ_DTYPE_INT, 50, false);

のように initVar() の第3引数に初期値を入れる。
データ初期値をセット(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'));
     }

}
テンプレート
XOOPS Cube Legacy では Smarty をテンプレー
  トエンジンに採用
• templates/{module}_{table}_delete.html
•   templates/{module}_{table}_edit.html
•   templates/{module}_{table}_list.html
•   templates/{module}_{table}_view.html
ActionForm                                                                 htmlフォーム
                                     forms/{Table}EditForm.class.php

                                       load
                                                Action
  MySQL             モデル
                                                Form
                                     update
          class/handler/{Table}.class.php
                                                                                          送信

                                                                       templates/{module}_{table}edit.html




htmlフォームとのデータのやり取り
  o   フォームからの入力値の保持
  o   DBの値をフォームに受け渡し

入力値検証(Validation)
入力値検証(Validation)
    入力値検証(          )
forms/{Table}EditForm.class.php
{Module}_{Table}EditForm

public function prepare()

{
    $this->mFieldProperties['weight'] = new XCube_FieldProperty($this);
    $this->mFieldProperties['weight']-
      >setDependsByArray(array('required'));
    $this->mFieldProperties['weight']->addMessage('required', '必須です', '表
      示順');

}
モジュールコンフィグ
設定
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');
モジュール設定
モジュールの各種設定
xoops_version.php
•   バージョン、開発者
•   テーブル
•   テンプレート
•   ブロック
•   モジュールコンフィグ
•   管理画面メニュー

Mais conteúdo relacionado

Mais procurados

HTMLの要素の選び方
HTMLの要素の選び方HTMLの要素の選び方
HTMLの要素の選び方
TENTO_slide
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
Yusuke Ando
 
Master of RecyclerView
Master of RecyclerViewMaster of RecyclerView
Master of RecyclerView
Yuki Anzai
 

Mais procurados (18)

EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)「Windows 8 ストア アプリ開発 tips」  hokuriku.net vol.11 (2013年1月26日)
「Windows 8 ストア アプリ開発 tips」 hokuriku.net vol.11 (2013年1月26日)
 
【第二回Android勉強会】データ永続化
【第二回Android勉強会】データ永続化【第二回Android勉強会】データ永続化
【第二回Android勉強会】データ永続化
 
20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark
 
Movable TypeのWebアプリケーションフレームワークの基本
Movable TypeのWebアプリケーションフレームワークの基本Movable TypeのWebアプリケーションフレームワークの基本
Movable TypeのWebアプリケーションフレームワークの基本
 
Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"Active Directoryデータの "大きい整数"
Active Directoryデータの "大きい整数"
 
CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発CakePHP+Smartyハイブリッドによるラクラク開発
CakePHP+Smartyハイブリッドによるラクラク開発
 
Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)Backbone model collection (jscafe 8)
Backbone model collection (jscafe 8)
 
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
ビギナーだから使いたいO/Rマッパー ~Tengを使った開発~
 
初心者〜中級者 Android StudioによるAndroid勉強会資料(スライド)
初心者〜中級者 Android StudioによるAndroid勉強会資料(スライド)初心者〜中級者 Android StudioによるAndroid勉強会資料(スライド)
初心者〜中級者 Android StudioによるAndroid勉強会資料(スライド)
 
HTMLの要素の選び方
HTMLの要素の選び方HTMLの要素の選び方
HTMLの要素の選び方
 
20091030cakephphandson 02
20091030cakephphandson 0220091030cakephphandson 02
20091030cakephphandson 02
 
Master of RecyclerView
Master of RecyclerViewMaster of RecyclerView
Master of RecyclerView
 
Active Directoryデータのプロパティ出力(Output Properties)
Active Directoryデータのプロパティ出力(Output Properties)Active Directoryデータのプロパティ出力(Output Properties)
Active Directoryデータのプロパティ出力(Output Properties)
 
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクトEWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
EWD 3トレーニングコース#20 GlobalストレージのJavaScript用抽象化-(a)DocumentNodeオブジェクト
 
Ll xcode
Ll xcodeLl xcode
Ll xcode
 
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in TokyoGrails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
Grails-1.1を斬る!~Grails-1.1からのチーム開発~ in Tokyo
 
PHPerのためのSwift入門
PHPerのためのSwift入門PHPerのためのSwift入門
PHPerのためのSwift入門
 

Semelhante a XOOPS Cube Conference 2012 Developer Workshop 3

Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
totty jp
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
co-hey japan
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
linzhixing
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a Nutshell
Tsuyoshi Miyake
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
龍一 田中
 

Semelhante a XOOPS Cube Conference 2012 Developer Workshop 3 (20)

pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピングpi-15. カプセル化, MVCモデル, オブジェクトのマッピング
pi-15. カプセル化, MVCモデル, オブジェクトのマッピング
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 
20091207
2009120720091207
20091207
 
Zend Db Table拡張説明資料
Zend Db Table拡張説明資料Zend Db Table拡張説明資料
Zend Db Table拡張説明資料
 
co-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出しco-2. メソッド定義と呼び出し
co-2. メソッド定義と呼び出し
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
Spring Data in a Nutshell
Spring Data in a NutshellSpring Data in a Nutshell
Spring Data in a Nutshell
 
Web技術勉強会 20100925
Web技術勉強会 20100925Web技術勉強会 20100925
Web技術勉強会 20100925
 
Best practice laravel
Best practice laravelBest practice laravel
Best practice laravel
 
Project lambda
Project lambdaProject lambda
Project lambda
 
Marionettejs getting started
Marionettejs getting startedMarionettejs getting started
Marionettejs getting started
 
ADRという考えを取り入れてみて
ADRという考えを取り入れてみてADRという考えを取り入れてみて
ADRという考えを取り入れてみて
 
SpringBootによるDB更新
SpringBootによるDB更新SpringBootによるDB更新
SpringBootによるDB更新
 
Cloud computing competition by Hapyrus
Cloud computing competition by HapyrusCloud computing competition by Hapyrus
Cloud computing competition by Hapyrus
 
PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!PHP 2大 web フレームワークの徹底比較!
PHP 2大 web フレームワークの徹底比較!
 
Gaej Jdo
Gaej JdoGaej Jdo
Gaej Jdo
 
Backbone.js
Backbone.jsBackbone.js
Backbone.js
 

Mais de Hikawa Kilica (6)

万能モジュール xCCK のご紹介 Osc20113 Nagoya
万能モジュール xCCK のご紹介 Osc20113 Nagoya万能モジュール xCCK のご紹介 Osc20113 Nagoya
万能モジュール xCCK のご紹介 Osc20113 Nagoya
 
XOOPS Cube Conference 2012 Developer Workshop 4
XOOPS Cube Conference 2012 Developer Workshop 4XOOPS Cube Conference 2012 Developer Workshop 4
XOOPS Cube Conference 2012 Developer Workshop 4
 
XOOPS Cube Conference 2012 Developer Workshop 2
XOOPS Cube Conference 2012 Developer Workshop 2XOOPS Cube Conference 2012 Developer Workshop 2
XOOPS Cube Conference 2012 Developer Workshop 2
 
Modulemaking
ModulemakingModulemaking
Modulemaking
 
XOOPS Cube 2012
XOOPS Cube 2012XOOPS Cube 2012
XOOPS Cube 2012
 
Xcck20101127
Xcck20101127Xcck20101127
Xcck20101127
 

XOOPS Cube Conference 2012 Developer Workshop 3