SOY CMS / SOY Shop

ブログトップ

マイページの注文詳細ページで注文情報を取得する

2014年04月09日

マイページでどのように各ページを表示するかというところまで見てきました。

マイページを表示する2


各ページでログインによる閲覧制限がどのようについているかということも見てきました。

マイページの各ページのログインチェックと表示


それらも踏まえて、注文詳細ページを見ていきたいと思います。





上記のキャプチャが注文詳細ページなのですが、

何の商品を購入したか?

いつ注文して、お届け先と請求先はどこなのか?

という情報が記載されています。


このページのURLを確認すると

/ショップID/user/order/detail/{注文ID}となっている。


引数として渡しているのは注文IDのみで、

他の情報は渡していません。


これだと他の顧客の注文情報を見れてしまうように思えますが、

注文IDから注文情報を取得する際に、

他のお客様の情報を見られないように顧客IDも紐づけて情報を表示しています。


実際の処理ですが、


/soyshop/webapp/src/mypage/_common/order/DetailPage.class.php

function DetailPage($args){
		
	$mypage = MyPageLogic::getMyPage();
		
	//ログインチェック
	if(!$mypage->getIsLoggedin()){
		$this->jump("login");
	}
		
	//orderIdがない場合はorderトップへ戻す
	if(!isset($args[0])){
		$this->jump("order");
	}
		
	//途中の処理を省略
		
	//URLの末尾に注文IDを付与しているので、そこから取得する
	$orderId = $args[0];

	//MyPageLogicでログインしているユーザIDを取得する
	$userId = $user->getId();

	//途中の処理は省略

	$orderDAO = SOY2DAOFactory::create("order.SOYShop_OrderDAO");
	try{
		//注文IDと顧客IDから注文情報を取得
		$order = $orderDAO->getForOrderDisplay($orderId, $userId);
		$logic = SOY2Logic::createInstance("logic.order.OrderLogic");
		
		if(!$order->isOrderDisplay())throw new Exception;
		
	}catch(Exception $e){
		$this->jump("order");
	}
}

処理の流れとしては、

・ログインしているかを調べる

・URLの末尾に注文IDはあるか

・ログインしている顧客のIDを取得できるか

・注文IDと顧客IDを紐づけてデータベースから注文詳細を取得する

・取得した注文情報の状態は公開か


このような処理を行っており、

各処理毎にページの表示の確認を行っています。