Архів по місяцям: Лютий 2018
Якщо ви використовуєте Magento 2.2.x і отримуєте наступну помилку:
1 exception(s):
Exception #0 (Magento\Framework\Config\Dom\ValidationException): Element 'block', attribute 'class': [facet 'pattern'] The value '\Magento\Framework\View\Element\Text\ListText' is not accepted by the pattern '[A-Z][_a-zA-Z\d]*(\\[A-Z][_a-zA-Z\d]*)*'.
Line: 1187
Element 'block', attribute 'class': '\Magento\Framework\View\Element\Text\ListText' is not a valid value of the atomic type 'blockClassType'.
Line: 1187
Будь ласка, знайдіть у всіх файлах макету * .xml рядок
class="\
та замініть його
class="
(Видалити слеш з початку значення класу атрибуту)
Захист онлайн-магазину та зменшення кількості помилок є одним із головних пріоритетів кожного продавця. Цього можна досягти за допомогою оновлення Magento та розширень для Magento 2.
Це відносно просте завдання для досвідченого розробника. Але оновити розширення в Magento може бути складно, якщо ви робите це вперше. Тому важливо знати точні кроки, які потрібно виконати.
Примітка: інструкції з оновлення зазвичай залежать від методу, за допомогою якого розширення Magento 2 було встановлено.
Оновлення розширення Magento 2 через composer
Якщо файли розширення розташовані в папці vendor/company/module-name, тоді розширення було встановлено через composer. Тому вам потрібно виконати такі кроки:
1. Відкрийте CLI (Command Line Interface).
2. Перейдіть до кореневої папки Magento 2.
3. Запустіть команди:
composer remove company/module-name
composer require company/module-name ^x.x.x
# replace x.x.x with the version you want to use
php bin/magento setup:upgrade
php bin/magento setup:di:compile
Уявіть, що ви поставили варити макарони і сіли грати Dota 2, чи будь-яку іншу гру, а одним вухом слухаєте чи не збігає "страва" - у такому випадку ви - слухач. Коли макарони починають збігати - викликається подія "макарони_почали_збігати", яка заставляє вас (слухача) підірватись з місця і помчати на кухню (виконати дію, алгоритм).
У Magento 2, як і в реальному житті, теж існують слухачі та події, які реалізовані на основі шаблону "Публікація-підписка" (Publish–subscribe pattern). Ми вже описували плагіни (plugins) у Magento 2, які дозволяють розширювати та змінювати функціонал магазину. Розглянемо, як це можна зробити за допомогою подій та слухачів.
Події (Events)
Події викликаються модулями Magento 2, коли та чи інша дія відбулася, або повинна відбутись. Мадженто має багато власних подій, а також дозволяє викликати власні.
Для виклику події використовуйте метод dispatch класу \Magento\Framework\Event\ Manager.
Для того щоб мати змогу швидко налаштовувати відруальні хости (домени) локального веб-сервера на базі змірки Linux+Apache+MySql+PHP, встановіть Virtualhost Manage Script.
Відкрийте CLI (командний рядок, термінал). Виконайте команди:
cd /usr/local/bin/
sudo wget https://raw.githubusercontent.com/RoverWire/virtualhost/master/virtualhost.sh
sudo chmod +x virtualhost.sh
sudo ln -s virtualhost.sh virtualhost
Зазвичай ви отримуєте помилку bash permission denied під час запуску скрипта/файлу, який не має дозволів на виконання (execute permissions). Це одна з найпоширеніших помилок Magento. Все, що вам потрібно зробити, це змінити дозволи файлу та додати дозвіл на виконання скрипта або файлу.
Щоб виправити помилку bash permission denied, виконайте такі кроки:
1. Відкрийте термінал (оболонка)
2. Перейдіть в папку зі скриптом
3. Запустіть CLI команду, щоб змінити налаштування дозволу файлу:
chmod +x path_to_file/file_name
Наприклад, якщо ви виконуєте CLI команду в Magento 2 :
bin/magento ...
і отримуєте помилку:
bash: bin/magento: Permission denied
Вам потрібно додати дозвіл на виконання (x) до файлу bin/magento.
Часто потрібно змінити логіку JavaScript коду, який знаходиться у .js файлі. Найпростіший спосіб - переписати js-файл, за допомогою теми. Як переписувати файли view описано у нашому блозі. Це швидкий, але не елегантний спосіб.
Для зміни одного чи декількох методів js-файлу, використовуйте змішувачі (Mixins), які доступні у RequireJS.
Щоб розширити файл:
app/code/VendorName/ModuleName/view/%area%/web/js/folder1/folder2/somefile.js