カートに商品を入れる

商品詳細ページでカートに入れるボタンを押すと、

カートページに商品が表示されます。
商品ごとに設置されているカートに入れるボタンを押すとカートに入りますが、
今回はボタンを押してからカートに入るまでの流れを見ていきます。

始めにカートに入れるボタンのHTMLを見ると、
同梱テンプレートではform型を利用しており、コードは下記のようになります。
<form action="/shop/cart/operation?a=add&count=1&item=1" method="post" > <input type="hidden" name="soy2_token" value="トークン" /> <!-- 途中省略 --> <input type="submit" value="カートに入れる"></p> </form>
もう一つのリンク型では、
<a href="/shop/cart/operation?a=add&count=1&item=1">カートに入れる</a>
となります。
どちらも共通しているのが、カートページのURLの後にoperationとGETで?a=add&count=1&item=1の値を指定しています。
このURLを元にページコントローラの処理を見ていきましょう。
カートページを開く場合、
/soyshop/webapp/src/base/SOYShopSiteController.class.phpでカートページを表示する際にexcuteCartApplicationが実行されますが、処理を詳しく見ると
function executeCartApplication($args){
$webPage = SOY2HTMLFactory::createInstance("SOYShop_CartPage", array(
"arguments" => array(SOYSHOP_CURRENT_CART_ID)
));
//カートに商品を入れる処理はここから
if(count($args) > 0 && $args[0] == "operation"){
$webPage->doOperation();
exit;
}else{
//カートの表示に関する処理
}
}
URLでcartの後にoperationがある場合は$webPage->doOperation()が呼びだれます。
doOperationは/soyshop/webapp/src/base/site/pages/SOYShop_CartPage.class.phpの13行目付近にあり、
function doOperation(){
$this->checkSSL();
SOY2::import("base.cart.cart", ".php");
header("Location: ". $this->getCartURL());
exit;
}
/soyshop/webapp/src/base/cart/cart.phpを読み込んだ後にカートページにリダイレクトします。
(checkSSLは管理画面で設定したカートページをhttpsで表示するかの処理になります。)
cart.phpを見ると
if(isset($_REQUEST["a"])) {
SOYShopPlugin::load("soyshop.item.option");
$cart = CartLogic::getCart();
//商品オプションの拡張ポイントの処理は省略
//カートに入っている商品に変更がある場合は、選択されているモジュールをクリアする
$cart->clearModules();
switch($_REQUEST["a"]) {
case "add":
//カートに商品を入れる関係の処理
break;
case "remove":
//カートに入れた商品をカートから削除する処理
break;
case "update":
//カートに入れた商品の個数を変更する処理
break;
case "shoooot";//カートを一つの商品で満たす
//開発用の処理
break;
}
//消費税の計算とモジュールの登録
if(SOYSHOP_CONSUMPTION_TAX_MODE){
//外税(プラグインによる処理)
$cart->setConsumptionTax();
}elseif(SOYSHOP_CONSUMPTION_TAX_INCLUSIVE_PRICING_MODE){
//内税(標準実装)
$cart->setConsumptionTaxInclusivePricing();
}else{
//何もしない
}
$cart->save();
}
//use cart id
$cartId = soyshop_get_cart_id();
include(SOY2::RootDir() . "cart/" . $cartId . "/cart.php");
詳しい処理は端折りますが、カートに入れる際にURLの末尾に追加したaの値はカートでのアクションの指示で、
a=addはカートに商品を入れる処理になります。
countはカートに入れる時の個数の指定で
itemはカートに入れる商品のIDになります。
商品オプションに関しては下記の記事をご覧ください。
aに入れる他の処理は

カート内の商品の操作の際に使います。
カートに商品を入れる処理が終わったら、$cart->save()でセッションに保存して、
/soyshop/webapp/src/cart/bryon/cart.phpを開いて、
(bryonは設定したカートID)
$cart = CartLogic::getCart();
$cart->setAttribute("page", null);
$cart->save();
カートページの開くページの設定を初期化して、/shop/cartにリダイレクトします。
カートページの指定の詳細は下記の記事をご覧ください。
これでカートに商品を入れる処理の一通りの流れは終了です。
2014.03.30 | Comments(0) | Trackback(0)
トラックバック -