Magento2.1.0 показывает ошибку Обязательный параметр 'theme_dir' не был передан при сохранении продукта в админке

17

Я сталкиваюсь с этой ошибкой Обязательный параметр 'theme_dir' не был передан при попытке сохранить продукт в админке. Я проверил конфигурацию темы, которая была назначена магазинам. Недавно я обновился с 2.0.7 до 2.1.0. Также я проверил, что существует каталог регистрации theme.php . Кто-нибудь сталкивался с этой проблемой.

Фабиан Шменглер
источник

Ответы:

42

Эта ошибка появляется при удалении папки шаблона, на которую все еще есть ссылка в базе данных. Простейший способ исправить это - перейти в базу данных и в таблице «theme» найти название темы, в которой не существует app/design/frontend/package.

DELETE ссылка на отсутствующую тему из таблицы.

Ву Ань
источник
Это должен быть принятый ответ.
30
ИДЕАЛЬНО .. РАБОТАЕТ, КАК
ОЧАРОВАНИЕ
Это должен быть принятый ответ.
Даан ван ден Берг
2 записи были добавлены в мою базу данных. Я обнаружил, что BUt все еще не работает
HaFiz Umer
10

Я могу подтвердить, что ответ Ву Ань работает. Вот объяснение, почему это происходит при сохранении продуктов , хотя удаленная тема нигде не используется:

После сохранения продукта кэш изображений восстанавливается для всех тем. Каждая тема может иметь свои собственные форматы размера изображения, определенные в, etc/view.xmlи все они будут сгенерированы.

Но вместо того, чтобы искать настроенные темы во всех магазинах, Magento просматривает все темы в themeтаблице.

Если вы не удалили тему должным образом и просто удалили файлы, осиротевшая запись ссылается на несуществующий путь и выдается описанное исключение.

Фабиан Шменглер
источник
2

У меня та же ошибка Обязательный параметр 'theme_dir' не был передан . Я работаю с 2.1.0 с самого начала, а не с обновлением. И у меня есть один пользовательский атрибут продукта "стиль".

Проблема возникает, когда я пытаюсь сохранить новую фотографию в материале. Без изображения товар сохраняется нормально.

Исправлено с комментированием исключения под файлом:

vendor/magento/framework/view/design/Fallbck/Rule/Simple.php  

Это сработало для меня. Но я думаю, что это взломать.

Галина
источник
Это определенно хак. Исправьте проблему вместо удаления исключения.
Даан ван ден Берг
-2

Наконец я исправил это, закомментировав исключение в vendor/magento/framework/View/Design/Fallback/Rule/Simple.php.

if (in_array($placeholder, $this->optionalParams)) {
    return [];
} else {
    return [];
    //throw new \InvalidArgumentException("Required parameter '{$placeholder}' was not passed");
}
7ochem
источник
4
Но это не исправляет ошибку, только не показывает ее больше. (Я думаю, что решение Ву Анха - это скорее исправление)
BvdVen
3
Это не правильный способ решения этой проблемы! Проверьте ответ от Ву Ань.
Медина
2
Это не лучшее решение. Пожалуйста, не делайте этого
Анкит Шах,