Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Корзина и оформление заказа на одной странице

00 голосов
3
Задача такая - оформление заказа должно быть прямо в корзине. Добавдяю в корзину компанент sale.order.ajax, вот так:
<?
require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");
$APPLICATION->SetTitle("Корзина");
?><?$APPLICATION->IncludeComponent("bitrix:store.sale.basket.basket", "cart_prefer", array(
    "COUNT_DISCOUNT_4_ALL_QUANTITY" => "N",
    "COLUMNS_LIST" => array(
        0 => "NAME",
        1 => "PROPS",
        2 => "PRICE",
        3 => "QUANTITY",
        4 => "DELETE",
    ),
    "AJAX_MODE" => "Y",
    "AJAX_OPTION_SHADOW" => "N",
    "AJAX_OPTION_JUMP" => "N",
    "AJAX_OPTION_STYLE" => "Y",
    "AJAX_OPTION_HISTORY" => "N",
    "PATH_TO_ORDER" => "/personal/order/make/",
    "HIDE_COUPON" => "N",
    "QUANTITY_FLOAT" => "N",
    "PRICE_VAT_SHOW_VALUE" => "N",
    "SET_TITLE" => "Y",
    "AJAX_OPTION_ADDITIONAL" => ""
    ),
    false
);?>
<?$APPLICATION->IncludeComponent("bitrix:sale.order.ajax", "sfc_order", array(
    "PAY_FROM_ACCOUNT" => "Y",
    "COUNT_DELIVERY_TAX" => "N",
    "COUNT_DISCOUNT_4_ALL_QUANTITY" => "N",
    "ONLY_FULL_PAY_FROM_ACCOUNT" => "N",
    "ALLOW_AUTO_REGISTER" => "Y",
    "SEND_NEW_USER_NOTIFY" => "Y",
    "DELIVERY_NO_AJAX" => "Y",
    "PROP_1" => array(
        0 => "4",
        1 => "6",
    ),
    "PROP_2" => array(
        0 => "16",
        1 => "17",
    ),
    "PATH_TO_BASKET" => "/personal/cart/",
    "PATH_TO_PERSONAL" => "/personal/order/",
    "PATH_TO_PAYMENT" => "/personal/order/payment/",
    "PATH_TO_AUTH" => "/auth/",
    "SET_TITLE" => "Y"
    ),
    false
)?>
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");?>

Вроде все работает, заказ отправляется. Но при попытке очистить корзину или удалить товар браузер выдает
"Неверное перенаправление на странице.  Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится."
В чем же тут проблема? Заранее благодарен за помощь.
спросил 21 Март, 14 от Tsugaru (100 баллов)

3 Ответы

00 голосов
Когда корзина пустая, компонент заказа перенаправляет на страницу корзины, т.е. на самого себя.
ответил 17 Сен, 14 от Snaper (580 баллов)
00 голосов
Цитата
Артем пишет:
Когда корзина пустая, компонент заказа перенаправляет на страницу корзины, т.е. на самого себя.
Да, в принципе я так и предполагал. И как это побороть?
ответил 22 Янв, 15 от Tsugaru (100 баллов)
00 голосов
В общем, решил проблему проверкой на наличие товаров в корзине. Если она пуста, компонент заказа просто не подключается:

Код
<?require($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

$APPLICATION->SetTitle("Корзина");

?><?$APPLICATION->IncludeComponent("bitrix:store.sale.basket.basket", "cart_prefer", array(

    "COUNT_DISCOUNT_4_ALL_QUANTITY" => "N",

    "COLUMNS_LIST" => array(

        0 => "NAME",

        1 => "PROPS",

        2 => "PRICE",

        3 => "QUANTITY",

        4 => "DELETE",

    ),

    "AJAX_MODE" => "Y",

    "AJAX_OPTION_SHADOW" => "N",

    "AJAX_OPTION_JUMP" => "N",

    "AJAX_OPTION_STYLE" => "Y",

    "AJAX_OPTION_HISTORY" => "N",

    "PATH_TO_ORDER" => "/personal/order/make/",

    "HIDE_COUPON" => "N",

    "QUANTITY_FLOAT" => "N",

    "PRICE_VAT_SHOW_VALUE" => "N",

    "SET_TITLE" => "Y",

    "AJAX_OPTION_ADDITIONAL" => ""

    ),

    false

);?>

<?$arBasketItems = array();

$dbBasketItems = CSaleBasket::GetList(
        array(
                "NAME" => "ASC",
                "ID" => "ASC"
            ),
        array(
                "FUSER_ID" => CSaleBasket::GetBasketUserID(),
                "LID" => SITE_ID,
                "ORDER_ID" => "NULL"
            ),
        false,
        false,
        array("ID", "CALLBACK_FUNC", "MODULE", 
              "PRODUCT_ID", "QUANTITY", "DELAY", 
              "CAN_BUY", "PRICE", "WEIGHT")
    );
while ($arItems = $dbBasketItems->Fetch())
{
   $arBasketItems[] = $arItems;
}

?>

<?if(!empty($arBasketItems)){
$APPLICATION->IncludeComponent("bitrix:sale.order.ajax", "sfc_order", array(
   "PAY_FROM_ACCOUNT" => "Y",
   "COUNT_DELIVERY_TAX" => "N",
   "COUNT_DISCOUNT_4_ALL_QUANTITY" => "N",
   "ONLY_FULL_PAY_FROM_ACCOUNT" => "N",
   "ALLOW_AUTO_REGISTER" => "Y",
   "SEND_NEW_USER_NOTIFY" => "Y",
   "DELIVERY_NO_AJAX" => "Y",
   "PROP_1" => array(
      0 => "4",
      1 => "6",
   ),
   "PROP_2" => array(
      0 => "16",
      1 => "17",
   ),
   "PATH_TO_BASKET" => "/personal/cart/",
   "PATH_TO_PERSONAL" => "/personal/order/",
   "PATH_TO_PAYMENT" => "/personal/order/payment/",
   "PATH_TO_AUTH" => "/auth/",
   "SET_TITLE" => "Y"
   ),
   false
);
}
?>

ответил 07 Май, 15 от Tsugaru (100 баллов)

Похожие вопросы

0 голосов
1 ответ
0 голосов
6 ответов
0 голосов
3 ответов
0 голосов
0 ответов
спросил 11 Ноя, 13 от Jlollipop (100 баллов)