как получить идентификатор сеанса клиента на html-странице magento 2


Я использую один пользовательский платежный модуль и хочу сделать код в html-файле. Путь

app/code/Custom/Payment/view/frontend/web/template/payment/custompayment.html

И мой код

$om = \Magento\Framework\App\ObjectManager::getInstance();
$customerSession = $om->get('Magento\Customer\Model\Session');
if($customerSession->isLoggedIn()){
  -----------code ---------
}

Js-файл, который я пытаюсь сделать, но не работает

define(
[      
    'jquery',
    'Magento_Customer/js/customer-data',
    'Magento_Checkout/js/view/payment/default'
],
function (Component) {
    'use strict';

    var getCustomerInfo = function () {
        var customer = customerData.get('customer');

        return customer();
    };

    var isLoggedIn = function (customerInfo) {
        customerInfo = customerInfo || getCustomerInfo();

        return customerInfo && customerInfo.firstname;
    };

    return Component.extend({
        defaults: {
            template: 'XJ_Payment/payment/custompayment'
        },

        /** Returns send check to info */
        getMailingAddress: function() {
            return window.checkoutConfig.payment.checkmo.mailingAddress;
        },


    });
}
);

Но я не могу получить результат. я знаю, что этот код идеально подойдет, если я включу файл контроллера или модели. но все же я сталкиваюсь с проблемой, которая выводится после -> во второй строке весь код печатается на интерфейсе. я не могу понять, что происходит.

Не могли бы вы, пожалуйста, подсказать мне, как решить эту проблему?

Author: Khoa TruongDinh, 2016-09-08

1 answers

По умолчанию в Magento невозможно добавить PHP-код в html-шаблон. Мы можем получить клиента из локального хранилища. Мы можем прочитать больше здесь: Как проверить, что клиент вошел в систему на интерфейсе в Magento 2.1?

ОБНОВЛЕНИЕ:

В возвращаемом js должно быть:

return Component.extend({
    defaults: {
        template: 'XJ_Payment/payment/xjpayment'
    },

    var customerInfo = getCustomerInfo();

    /** Returns send check to info */
    getMailingAddress: function() {
        return window.checkoutConfig.payment.checkmo.mailingAddress;
    },
    isLoggedIn : isLoggedIn(customerInfo)
});

В вашем html-шаблоне:

......
<!-- ko if: isLoggedIn() -->
    <span>Customer is logged</span>
<!-- /ko -->
......

Не забудьте удалить статическое содержимое и запустить снова.

 1
Author: Khoa TruongDinh, 2017-04-13 12:54:58