public function testRemove() { $cart = new StallCart($this->cartVar); $cart->add(1, 1); $cart->add(1, 2); $cart->add(1, 5); $cart->add(6, 1); $cart->add(3, 2); $this->assertEquals(3, $cart->cartCount()); $cart->remove(6); $this->assertEquals(2, $cart->cartCount()); $cart->remove(3, 50); $this->assertEquals(1, $cart->cartCount()); $cart->remove(1, 2); $this->assertEquals(1, $cart->cartCount()); $this->assertEquals(6, $cart->viewCart(1)['count']); $cart->add(1, 0); //this remove $this->assertEquals(0, $cart->cartCount()); unset($cart); }
<?php require $_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php"; /** * @link https://github.com/anmaslov/stall * @copyright Copyright © Alexey Maslov, 2016 * @license http://opensource.org/licenses/mit-license.php */ if (!CModule::IncludeModule('anmaslov.stall')) { return; } $cart = new StallCart('anmaslov.stall'); $sAction = $_REQUEST['action']; $id = (int) $_REQUEST['id']; $count = (int) $_REQUEST['count']; if ($sAction) { switch ($sAction) { case 'add': $cart->add($id, $count); break; case 'remove': $cart->remove($id, $count); break; } } echo \Bitrix\Main\Web\Json::encode($cart->viewCart());
//обновление корзины foreach ($_POST as $arPostVal => $count) { if (strstr($arPostVal, "cart_item_")) { $id = substr($arPostVal, 10); if (preg_match('/^[1-9]\\d*$/', $count)) { //Проверка на целое число $cart->update($id, $count); } } } LocalRedirect($APPLICATION->GetCurPageParam()); } ////// } if ($cart->cartCount()) { $cartArr = array_keys($cart->viewCart()); $arSelect = array("ID", "NAME", "PREVIEW_PICTURE", "DETAIL_PICTURE", "DETAIL_PAGE_URL", "PROPERTY_PRICE"); $arFilter = array('IBLOCK_ID' => $arParams["IBLOCK_ID"], "ID" => $cartArr, "ACTIVE" => "Y"); $res = CIBlockElement::GetList(array(), $arFilter, false, array(), $arSelect); $res->SetUrlTemplates($arParams["DETAIL_URL"]); //Применяем шаблон построения ссылок из настроек if ($_SERVER["REQUEST_METHOD"] == "POST" && isset($_POST["SendOrder"]) > 0) { $arResult["SHOW_FORM"] = 1; if (strlen($_POST["name"]) < 3) { $arResult["ERROR_MESSAGE"]["NAME"] = GetMessage("STALL_USER_NAME_ERROR_MIN_VALUE"); } if (strlen($_POST["email"]) < 5 || !check_email($_POST["email"])) { $arResult["ERROR_MESSAGE"]["EMAIL"] = GetMessage("STALL_USER_EMAIL_ERROR"); } if (strlen($_POST["phone"]) < 5) { $arResult["ERROR_MESSAGE"]["PHONE"] = GetMessage("STALL_USER_PHONE_ERROR_MIN_VALUE");
<?php /** * @link https://github.com/anmaslov/stall * @copyright Copyright © Alexey Maslov, 2016 * @license http://opensource.org/licenses/mit-license.php */ if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule('iblock')) { return; } if (!CModule::IncludeModule('anmaslov.stall')) { return; } $IBLOCK_ID = intval(COption::GetOptionString("anmaslov.stall", "iblock_id")); $cart = new StallCart('anmaslov.stall'); if ($cart->cartCount()) { $arCart = array_keys($cart->viewCart()); $arSelect = array("ID", "NAME", "PROPERTY_price"); $arFilter = array('IBLOCK_ID' => $IBLOCK_ID, "ID" => $arCart, "ACTIVE" => "Y"); $res = CIBlockElement::GetList(array(), $arFilter, false, false, $arSelect); while ($ob = $res->GetNext()) { $arResult[] = array("ID" => $ob['ID'], "NAME" => $ob['NAME'], "PRICE" => $ob['PROPERTY_PRICE_VALUE'], "COUNT" => $cart->viewCart($ob['ID'])['count']); //$ob->GetFields(); } } else { $arResult = array(); } $this->IncludeComponentTemplate();