【问题标题】:Redirect function in cscart addon not workingcscart插件中的重定向功能不起作用
【发布时间】:2015-04-21 06:21:03
【问题描述】:

函数fn_redirect($url,true,true) 在我将其添加到我创建的 cscart 的新插件中时不起作用。我添加了use Tygh\Registry;。但为什么它不起作用?

在我的立即购买插件中,我在 buy_now.php(控制器)中调用 fn_redirect。它的功能与 addtocart 相同。但在商品加入购物车后,它必须重定向到结帐页面。

if ($mode == 'add') {

    if (empty($auth['user_id']) && Registry::get('settings.General.allow_anonymous_shopping') != 'allow_shopping') {
        return array(CONTROLLER_STATUS_REDIRECT, "auth.login_form?return_url=" . urlencode($_REQUEST['return_url']));
    }

    // Add to cart button was pressed for single product on advanced list
    if (!empty($dispatch_extra)) {
        if (empty($_REQUEST['product_data'][$dispatch_extra]['amount'])) {
            $_REQUEST['product_data'][$dispatch_extra]['amount'] = 1;
        }
        foreach ($_REQUEST['product_data'] as $key => $data) {
            if ($key != $dispatch_extra && $key != 'custom_files') {
                unset($_REQUEST['product_data'][$key]);
            }
        }
    }

    $prev_cart_products = empty($cart['products']) ? array() : $cart['products'];

    fn_add_product_to_cart($_REQUEST['product_data'], $cart, $auth);
    fn_save_cart_content($cart, $auth['user_id']);


    //header("Location: ". Registry::get('config.https_location') . "/checkout");

    fn_redirect(Registry::get('config.https_location') . "/checkout",true);

    $previous_state = md5(serialize($cart['products']));
    $cart['change_cart_products'] = true;
    fn_calculate_cart_content($cart, $auth, 'S', true, 'F', true);

    if (md5(serialize($cart['products'])) != $previous_state && empty($cart['skip_notification'])) {
        $product_cnt = 0;
        $added_products = array();
        foreach ($cart['products'] as $key => $data) {
            if (empty($prev_cart_products[$key]) || !empty($prev_cart_products[$key]) && $prev_cart_products[$key]['amount'] != $data['amount']) {
                $added_products[$key] = $data;
                $added_products[$key]['product_option_data'] = fn_get_selected_product_options_info($data['product_options']);
                if (!empty($prev_cart_products[$key])) {
                    $added_products[$key]['amount'] = $data['amount'] - $prev_cart_products[$key]['amount'];
                }
                $product_cnt += $added_products[$key]['amount'];
            }
        }

        if (!empty($added_products)) {
            Registry::get('view')->assign('added_products', $added_products);
            if (Registry::get('config.tweaks.disable_dhtml') && Registry::get('config.tweaks.redirect_to_cart')) {
                Registry::get('view')->assign('continue_url', (!empty($_REQUEST['redirect_url']) && empty($_REQUEST['appearance']['details_page'])) ? $_REQUEST['redirect_url'] : $_SESSION['continue_url']);
            }

         //  $msg = Registry::get('view')->fetch('views/checkout/checkout.tpl');
           // fn_set_notification('I', __($product_cnt > 1 ? 'products_added_to_cart' : 'product_added_to_cart'), $msg, 'I');
            $cart['recalculate'] = true;
        } else {
            fn_set_notification('N', __('notice'), __('product_in_cart'));
        }
    }

    unset($cart['skip_notification']);

    $_suffix = '.checkout';

    if (Registry::get('config.tweaks.disable_dhtml') && Registry::get('config.tweaks.redirect_to_cart') && !defined('AJAX_REQUEST')) {
        if (!empty($_REQUEST['redirect_url']) && empty($_REQUEST['appearance']['details_page'])) {
            $_SESSION['continue_url'] = fn_url_remove_service_params($_REQUEST['redirect_url']);
        }
        unset($_REQUEST['redirect_url']);
    }


}

return array(CONTROLLER_STATUS_REDIRECT, 'checkout.cart');

}

在 add_to_cart.post.tpl 中

{$id = "buy_now_{$product.product_id}"}
<button id="opener_{$id}" name="dispatch[buy_now.add..{$product.product_id}]" onclick="goto_checkout()" data-ca-target-id="content_{$id}" class=" buynow_btn">BUY NOW</button>

【问题讨论】:

  • 如果你更详细地阐述你的问题,你将有更大的机会得到一个好的答案,例如,你如何以及何时调用该函数?代码示例?

标签: php cs-cart


【解决方案1】:

如果你在控制器 php 文件中使用它,比如

app/addons/MY_ADDON/controllers/frontend/MY_ADDON.php

你可以使用

return array(CONTROLLER_STATUS_REDIRECT, $url);

【讨论】:

  • 不...它没有重定向..我想重定向到结帐页面。
  • 在此,即使 fn_print_r 不起作用,但 fn_add_to_cart 起作用。可能是什么原因?
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-02-14
  • 2020-03-01
  • 1970-01-01
  • 2013-07-04
  • 2014-01-13
相关资源
最近更新 更多