Що таке повідомлення про помилку:
Обов’язковий параметр 'theme_dir' не був переданий
Це пов’язано з Magento 2? І як цю проблему можна виправити?
Що таке повідомлення про помилку:
Обов’язковий параметр 'theme_dir' не був переданий
Це пов’язано з Magento 2? І як цю проблему можна виправити?
Відповіді:
Про всяк випадок, якщо ви видаляєте тему безпосередньо (Не в Magento).
Потім виконайте ці кроки.
Видаліть вміст із нього app/design/frontend/<Vendor>
(переконайтесь, що ви створили його назад).
Видаліть увесь вміст папки var/view_preprocessed
& pub/static/frontend
.
Перейдіть до theme
таблиці та видаліть запис для створеної теми.
Після того...
Перейдіть до свого core_config_data
столу та шукайте, theme
і ви отримаєте записи траєкторій, такі як design/theme/theme_id
замініть ідентифікатор теми за замовчуванням у ньому.
Очистіть кеш php bin/magento cache:flush
Повідомте мене, якщо ви все-таки стикаєтесь з якимись проблемами після цього.
theme
-table, але забув про core_config_data
значення.
setup:static-content:deploy
адміністратор повернувся до інтерфейсу користувача.
pub/static/.htaccess
було не там. спасибі
Це повідомлення про помилку означає, що у вас налаштована тема, яка не існує у файловій системі (більше).
Це можна легко виправити, вибравши замість цього дійсну тему. Перейдіть до Змісту -> Конфігурація , виберіть область застосування (глобальний, веб-сайт, магазин_погляд) та змініть тему. Після того, як ви зробите це, вам слід також видалити його із вмісту -> теми .
У моєму випадку я видалив дочірню тему з каталогу постачальників. Але запис БД все ще був у theme
таблиці. Тому перейдіть до theme
таблиці та видаліть запис, який вказує на видалену тему.
composer remove vendor/theme
?
rm -rf vendor/theme
Переконайтеся, що theme
запис та запис таблиці magento\app\design\frontend\<Vendor>
будуть однаковими.
Якщо ні, це викликає це питання.
Видаліть непотрібну тему через адміністратор -> вміст -> дизайн -> теми . Видаліть його. Таким чином, він також видалить Введення БД.
Якщо ви видалите лише папку, вона не працюватиме
Ця проблема також може виникнути, коли ви перебуваєте в емульованому стані, наприклад, у команді CLI. У мене виникла ситуація, коли мені не вдалося надіслати електронний лист у CLI, оскільки команда обгортання виконувалась у емульованому стані:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
У наведеному вище прикладі, коли електронна пошта намагалася визначити, що це шаблон dir, він буде відображатись global/Magento/backend
, що не існує. Щоб виправити це, мені довелося вручну додати його до свого конструктора:
/** @var \Magento\Framework\Component\ComponentRegistrarInterface $componentRegistrar */
// Make the admin theme global accessible for sending e-mails:
\Magento\Framework\Component\ComponentRegistrar::register(
'theme',
'global/Magento/backend',
$componentRegistrar->getPath('theme', 'adminhtml/Magento/backend')
);
Після цього виправлення питання було вирішено, і я міг надіслати електронний лист.
Оновлення:
Що стосується надсилання пошти за допомогою CLI, більш правильним підходом було б використання емуляції. Наприклад:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
Таким чином, вам не доведеться до своїх брудних маленьких хаків.
@hakre правильний. Я отримав таку ж помилку Required parameter 'theme_dir' was not passed
. Нижче я пояснюю, що я зробив, щоб викликати помилку:
Я створюю тему в каталозі app / design / frontend / MyVendorTheme2 / myThemeName2 , а потім конфігурував її, вибравши тему " MyVendorTheme2 - myThemeName2 " у браузері адміністратора Magento 2 ( Магазини> Конфігурація> НАСТРОЙКИ ТЕМИ> ЗАГАЛЬНІ> Дизайн> Тема дизайну ) . Але я вирішив перемістити каталог " myThemeName2 " (що містить мою нову тему), щоб він знаходився під іншою (існуючою) папкою постачальника " MyVendorTheme1 " додаток / дизайн / frontend / MyVendorTheme1 / myThemeName2 , і видалив її з папки " MyVendorTheme2 ", де це було раніше. Я приступив до компіляції активів (тобто grunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
), а потім відкрив веб-переглядач у своєму субдомені теми (тобто http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).
Спочатку я отримав невказану помилку:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
Я ввімкнув повідомлення про помилки шляхом перейменування на pub/errors/local.xml.sample
сторінку local.xml
та оновив її. Потім мені представили помилку Required parameter 'theme_dir' was not passed
.
Я вирішив помилку, повернувшись до свого браузера Magento 2 Admin ( Магазини> Конфігурація> НАЛАШТУВАННЯ ТЕМИ> ЗАГАЛЬНО> Дизайн> Тема дизайну ), у якому була обрана моя попередня і тепер недійсна тема дизайну, тому я вибрав правильну.
1 - Використовуйте команду нижче, щоб визначити теми на панелі адміністратора.
n98-magerun2 dev:theme:list
2 - Запустіть команду для виявлення встановлених тем:
ls -lha app/design/frontend/MyThemePackage/
3- Запустіть ці команди нижче, щоб створити тему, яка не існує:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Якщо нічого не вийшло, не забудьте перевірити розділ категорій. Тут також є налаштування дизайну. Переконайтеся, що призначена правильна тема дизайну. У моєму випадку я отримував помилку лише в деяких категоріях.
Ви можете видалити невикористану тему з БД безпосередньо, виконавши цей нижче запит:
delete from theme where theme_path in ('unusedtheme');
whee unusedtheme - це невикористана тема, і після цього ви очистите кеш
У деяких випадках ви видаляєте власну тему належним чином, тоді ви також зіткнетеся з цією помилкою. У цій ситуації:
1) you have to delete that entry/row from 'theme' table.
2) set value 1 (1 for blank theme 2 for Luma what ever you want to set) against 'design/theme/theme_id'
Оновіть помилку сторінки, що зникла.
Я вирішив це питання. У моєму випадку проблема була не в Magento2, а в неправильній операції, яку я робив час тому наступним чином: я створив тему, що створює відносний шлях у програмі / дизайні / frontend / MyFolder / MyTheme, і зареєстрував її, як пояснено в онлайн-документації Magento 2. Тоді я вирішив скасувати тему, а замість цього скористався відповідною командою: bin / magento theme: uninstall frontend / MyFolder / MyTheme. Я видалив папки безпосередньо. Це не дуже добре, оскільки база даних не оновлюється відповідною інформацією. Рішення: за допомогою редактора бази даних у вигляді phpmyadmin видаліть запис у таблиці "Тема", що відповідає видаленим папкам. Сподіваюся, це допоможе!
Я знаю, що це питання досить давнє, але оскільки я сьогодні зіткнувся з цим питанням і швидко з'ясував, у чому моя проблема, я вирішив опублікувати свою відповідь як нагадування для всіх тих, хто, як і я, використовує PhpStorm для роботи з Magento: не забудьте перевірити свої файли при переключенні гілок.
У моєму випадку гілка, над якою я працював, не мала потрібних файлів тем (вони були перезаписані PhpStorm, коли я перейшов з гілки теми в головну гілку), оскільки вони ще не були об'єднані в неї, таким чином помилка.
Сподіваюся, це може комусь допомогти.
видалити всі тимчасові файли теми, які не використовуються на веб-сайті, а також видалити з теми, яка не використовує та не керує кешем: flush