【SOY Shop】カテゴリー一覧を表示するもモジュールを作成する
2010.07.04
SOY Shop1.3.0より追加されましたモジュールの追加機能ですが、
どんなことが出来るか?ドキュメントが欲しいとの要望がありましたので、
SOY2DAOを使って、簡単なカテゴリー一覧を表示するモジュールを作成してみたいと思います。
モジュールの追加はこちらを参考に作成してもらい、
新たに追加したモジュールを元に記述を進めていきます。
追加したモジュールを編集する画面を開くと、
<?php
//ここにモジュールとして読み込むHTML・PHPを記述してください。
//使用可能な変数
// $html テンプレートに記述されたHTML
// $htmlObj ページオブジェクト($htmlObj->createAdd()が使えます)
?>
という記述が予め記述されています。
始めに、
SOY2DAOで、カテゴリーのテーブルから全ての値を取り出します。
<?php
$dao = SOY2DAOFactory::create("shop.SOYShop_CategoryDAO");
?>
SOY2DAOFactory::create();はクラス名を元にオブジェクトをつくりそのインスタンスを返すメソッドで、
/soyshop/webapp/src/domain/直下にあるクラスを読み込むことが出来ます。
(第一引数には、ディレクトリ名.クラス名を入れます)
今回は、カテゴリー一覧を作るので、
shopディレクトリにあるSOYShop_CategoryDAOクラスのインスタンスを返します。
SOYShop_CategoryDAO.class.phpを見ると、get()がカテゴリーテーブルから全ての値をとってくるので、
<?php
$dao = SOY2DAOFactory::create("shop.SOYShop_CategoryDAO");
try{
$categories = $dao->get();
}catch(Exception $e){
}
?>
$categoriesの配列を見てみると
array(3) {
[1]=>
object(SOYShop_Category)#82 (6) {
["id:private"]=>
string(1) "1"
["name:private"]=>
string(15) "カテゴリ1"
["alias:private"]=>
string(15) "category-1.html"
["order:private"]=>
string(1) "0"
["parent:private"]=>
NULL
["config:private"]=>
NULL
}
[2]=>
object(SOYShop_Category)#81 (6) {
["id:private"]=>
string(1) "2"
["name:private"]=>
string(15) "カテゴリ2"
["alias:private"]=>
string(15) "category-2.html"
["order:private"]=>
string(1) "0"
["parent:private"]=>
NULL
["config:private"]=>
NULL
}
[3]=>
object(SOYShop_Category)#74 (6) {
["id:private"]=>
string(1) "3"
["name:private"]=>
string(15) "カテゴリ3"
["alias:private"]=>
string(15) "category-3.html"
["order:private"]=>
string(1) "0"
["parent:private"]=>
NULL
["config:private"]=>
NULL
}
}
(ディフォルト状態で)登録されているカテゴリーを全て取得できました。
あとは、foreachで個々の値をechoすれば終わりです。
<?php
$dao = SOY2DAOFactory::create("shop.SOYShop_CategoryDAO");
try{
$categories = $dao->get();
}catch(Exception $e){
}
$html = array();
$html[] = "<ul>";
foreach($categories as $category){
$html[] = "<li>".$category->getName()."</li>";
}
$html[] = "</ul>";
echo implode("\n",$html);
?>
ここのオブジェクトから値を取得したい(今回は、["name"]の値)場合は、
SOYShop_Category.class.phpにあるgetterを使用してください。
(["name"]の値を取得する場合はgetName())
上記のコードを表示してみると
<ul>
<li>カテゴリ1</li>
<li>カテゴリ2</li>
<li>カテゴリ3</li>
</ul>
このようなHTMLが出力されました。
今回はSOYShop_CategoryDAOを読み込みましたが、
SOYShop_ItemDAOを読み込めば、商品リストを表示することが出来るようになるので、
ちょっとしたものを表示したいときにモジュールをお使いください。