Ошибка типа: getCartParam не является функцией в M2.0.X, а ошибка типа: корзина не является функцией в M2.1.X
Работа с Magento 2.0.X После успешного переопределения vendor/magento/module-checkout/view/frontend/web/template/minicart/content.html
в моем расширении приводит к ошибке в консоли браузера
Т.е. Ошибка типа: getCartParam не является функцией.
И после некоторого RND я нашел решение заменить getCartParam
на cart
, и оно работает нормально.
Но когда я тестирую свое расширение в M2.1.X, оно выдает мне ошибку
Т.е. Ошибка типа: корзина не является функция
А затем я возвращаюсь обратно cart
к getCartParam
, и это работает.
Итак, мне нужно разработать два разных расширения для М2.0.X или М2.1.X для достижения совместимости?
Есть ли у них какая-либо разница в коде между М2.0.X и М2.1.X?
Почему это происходит?
1 answers
Итак, мне нужно разработать два разных расширения для M2.0.x или M2.1.x для достижения совместимости?
Есть ли у них какая-либо разница в коде между M2.0.X и M2.1.X?
Короткий ответ: Да и да много.
Длинный ответ (цитируя Винаи, который недавно дал мне отличное объяснение по этому поводу):
Отказ от ответственности: это отражает понимание вещей (которое может быть неполным)
При разработке модуля для Magento 2, вам нужно добавить зависимости композитора от модуля, от которого зависит ваш модуль. В вашем случае одной из таких зависимостей является magento/module-checkout
.
Зависимость должна быть точной версией, если вы используете методы/константы/классы без @api
и в основной версии, если вы используете только методы с @api
.
Если модуль использует что-либо не @api
(имя класса, метод, константу в не @api
классе...), модуль должен зависеть от точной версии зависимость.
Например, для Magento 2.1.2:
"require": {"magento/module-checkout":"100.1.2"}
Если модуль использует только что-то помеченное @api
из модуля, достаточно зависеть только от основной версии.
Например:
"require": {"magento/module-checkout":"^100.1.2"}
Если модуль использует наблюдателей или компоненты пользовательского интерфейса JS, то следует добавить зависимость от младшей версии:
Например:
"require": {"magento/module-checkout":"100.1.*"}
Итак, как разработчик расширений, вот шаги, которые необходимо предпринять после Magento обновление:
- обновите Magento (для этого может потребоваться разрешить новую версию в json композитора модуля)
- запустите тесты, которые вы написали для своего модуля
- если они пройдут, опубликуйте новую версию модуля с обновленной зависимостью. Теперь клиенты, использующие модуль, могут обновить Magento
- если они не пройдут, исправьте проблему и перейдите к 2
В идеале, ЕСЛИ (большое если) все добавят соответствующие зависимости, установка не может быть обновлена прежде чем все модули будут совместимы с новой версией.
Этот процесс будет не таким простым, как кажется. Теоретически поставщики расширений будут использовать версии develop
ветви/бета-версии/RC для запуска своих тестов модулей перед выпуском и сокращения этой фазы.