Что такое сообщение об ошибке:
Обязательный параметр '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
была не там. спасибо
Это сообщение об ошибке означает, что у вас настроена тема, которой больше нет в файловой системе (больше).
Это можно легко исправить, выбрав правильную тему. Перейдите в Content -> Configuration , выберите область (global, website, store_view) и измените тему. После того, как вы это сделали, вы также должны удалить его из Content -> Themes .
В моем случае я удалил дочернюю тему из каталога Vendor. Но запись БД все еще была в theme
таблице. Итак, зайдите в theme
таблицу и удалите запись, которая указывает на удаленную тему.
composer remove vendor/theme
?
rm -rf vendor/theme
Убедитесь, что theme
запись в таблице и magento\app\design\frontend\<Vendor>
запись будут одинаковыми.
Если нет, то это вызывает эту проблему.
Удалите ненужную тему через Admin -> Content -> Design -> Themes . Удалите это. Так что это также удалит запись в БД.
Если вы удалите только папку, она не будет работать
Эта проблема также может возникнуть, когда вы находитесь в эмулируемом состоянии, например, в команде 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 » app / design / 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 (« Магазины»> «Конфигурация»> «ТЕМАТИЧЕСКИЕ НАСТРОЙКИ»> «ОБЩИЕ»> «Дизайн»> «Тема оформления» ), в котором была выбрана моя предыдущая и теперь недопустимая тема оформления, поэтому я выбрал правильную.
Эта ошибка произошла со мной при сохранении изображений продукта после установки пользовательской темы.
У меня была настраиваемая тема, которая была установлена как виртуальный тип, который находится в БД в таблице тем, введите = 1. В моем случае я больше не использовал тему, поэтому удалил ее из таблицы.
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');
Когда неиспользованная тема является неиспользуемой темой, а после вы очистите свой кеш
В некоторых случаях вы удаляете пользовательскую тему неправильно, тогда вы также столкнетесь с этой ошибкой. В этой ситуации:
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, а в неправильной операции, которую я выполнял некоторое время назад следующим образом: я создал тему, создающую относительный путь в app / design / frontend / MyFolder / MyTheme, и зарегистрировал ее, как объяснено в онлайн-документации Magento 2. Тогда я решил отменить тему и вместо этого использовать соответствующую команду: bin / magento theme: uninstall frontend / MyFolder / MyTheme, я удалил папки напрямую. Это не очень хорошая операция, так как база данных не обновляется необходимой информацией. Решение: с помощью редактора базы данных phpmyadmin удалите запись в таблице «Тема», соответствующую удаленным папкам. Я надеюсь, это поможет!
Я знаю, что этот вопрос довольно старый, но поскольку я столкнулся с этим только сегодня и быстро выяснил, в чем заключалась моя проблема, я решил опубликовать свой ответ в качестве напоминания для всех тех, кто, как и я, использует PhpStorm для работы с Magento: не забудьте проверить свои файлы при переключении веток.
В моем случае у ветви, над которой я работал, не было необходимых файлов темы (они были спрятаны PhpStorm, когда я перешел из ветви темы в основную ветку), потому что они еще не были объединены, поэтому ошибка.
Надеюсь, это может кому-то помочь.
удалите все временные файлы темы, которые не используются на сайте, а также удалите из темы, которая не используется, и запустите кеш: flush