XOOPS Cube Conference 2012 Developer Workshop 3
Upcoming SlideShare
Loading in...5
×
 

XOOPS Cube Conference 2012 Developer Workshop 3

on

  • 1,479 views

 

Statistics

Views

Total Views
1,479
Slideshare-icon Views on SlideShare
1,479
Embed Views
0

Actions

Likes
2
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    XOOPS Cube Conference 2012 Developer Workshop 3 XOOPS Cube Conference 2012 Developer Workshop 3 Presentation Transcript

    • モジュール作成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.htmlhtmlフォームとのデータのやり取り o フォームからの入力値の保持 o DBの値をフォームに受け渡し入力値検証(Validation)
    • 入力値検証(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, 必須です, 表 示順);}
    • モジュールコンフィグ設定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• バージョン、開発者• テーブル• テンプレート• ブロック• モジュールコンフィグ• 管理画面メニュー