【问题标题】:How to get step name on checkout page in magento 2?如何在 magento 2 的结帐页面上获取步骤名称?
【发布时间】:2017-10-30 22:09:53
【问题描述】:

我在结帐页面的“订单摘要”中添加了一个自定义块。它显示在两个步骤 - 运输和付款。但我需要知道当前步骤是什么。我怎样才能在这个街区得到它?

【问题讨论】:

    标签: javascript magento checkout magento2


    【解决方案1】:

    您可以在自定义块模板/组件中使用Magento_Checkout/js/view/progress-bar 组件或Magento_Checkout/js/model/step-navigator 组件(由进度条使用)。

    使用进度条:

    var registry = require('uiRegistry'),
        progressBar = registry.get('index = progressBar'),
        firstStep = progressBar.steps()[0];
    
    progressBar.isProcessed(firstStep); // returns bool, shipping step by default 
    

    使用步进导航器:

    var stepnav = require('Magento_Checkout/js/model/step-navigator');
    stepnav.getActiveItemIndex() // returns int - 0 for shipping & 1 for payment by default
    

    或:

    var registry = require('Magento_Checkout/js/model/step-navigator');
    registry.isProcessed('shipping'); // returns bool, you are on shipping step
    

    注意:第二步名称默认为payment

    PS:在您自己的组件中,您可以将Magento_Checkout/js/view/progress-barMagento_Checkout/js/model/step-navigator 添加到定义列表中:

    define(
        [
            'Magento_Checkout/js/model/step-navigator'
        ],
        function (
            stepNavigator
        ) {
            // do something with stepNavigator
        }
    );
    

    【讨论】:

    • 只是为了澄清一件事。 isProcessed('shipping') 将在shipping step 上返回false,因为它还没有被处理。在payment step 上时,它将返回true。不管怎样,谢谢。节省了我一些时间:)