Mais conteúdo relacionado Semelhante a XOOPS Cube Conference 2012 Developer Workshop 3 (20) Mais de Hikawa Kilica (6) XOOPS Cube Conference 2012 Developer Workshop 35. テーブルとハンドラとモデル
データベーステーブル
(MySQL) ハンドラ
データベースとモデルを扱う
handler::get() handler::insert()
object::get() object::set()
モデル
object::getShow()
(データオブジェクト)
フィールド
入力値
の値
6. データを扱う(オブジェクトの取得)
primary key の値を指定してオブジェクトを取得
$handler =Legacy_Utils::getModuleHandler('{table}', '{dirname}');
# primary key の値が 3 のデータを取得
# primary key を引数にして、1件のレコードータをテーブルから取得し、オブジェクトに格納する
$newsObject = $handler->get(3);
データベーステーブル handler::get() モデル
(MySQL)
(データオブジェクト)
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) モデル
モデル
(データオブジェクト)
(データオブジェクト)
(データオブジェクト)
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. データ初期値をセット(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. テンプレート
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. 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)
14. 入力値検証(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', '必須です', '表
示順');
}
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');