当前位置: 首页>>WEB开发>>正文


必需参数’theme_dir’未通过

webfans WEB开发 , , , , 去评论

问题描述

什么是错误信息:

Required parameter ‘theme_dir’ was not passed

它与Magento 2有关吗?如何解决这个问题?

最佳解决方法

以防万一,如果你直接删除主题(不是在Magento的方式)。

然后按照这些步骤。

第1步:文件操作

app/design/frontend/<Vendor>删除内容。

删除文件夹var/view_preprocessed& pub/static/frontend

第2步:数据库操作

转到您的theme表并删除您创建的主题的条目。

之后…

转到您的core_config_data表并搜索theme,您将获得路径记录,如design/theme/theme_id替换您的默认主题ID。

第3步:刷新缓存

刷新缓存php bin/magento cache:flush

在此之后,如果您仍然遇到任何问题,请告诉我。

次佳解决方法

此错误消息意味着您已经配置了file-system(不再存在)的主题。

可以通过选择有效的主题来轻松修复它。转到内容 – >配置,选择范围(全局,网站,store_view)并更改主题。完成之后,您还应该将其从内容中删除 – >主题。

magento2,theme,configuration,troubleshooting,magento

参考

第三种解决方法

在我的情况下,我从Vendor目录中删除了一个子主题。但是theme表中的数据库条目仍然存在。因此,转到theme表并删除指向已删除主题的记录。

第四种方法

确保theme表格条目& magento\app\design\frontend\<Vendor>条目将相同。

如果不是,它会导致这个问题。

通过管理员删除不必要的主题 – >内容 – >设计 – >主题。删除它。所以它也会删除数据库条目。

如果你只删除文件夹,那么它不会工作

第五种方法

当您处于模拟状态时(例如,在CLI命令中),也会发生此问题。我遇到了无法在CLI中发送e-mail的情况,因为包装命令在仿真状态下运行:

$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
    // In this section the email was sent
});

在上面的示例中,当e-mail试图确定它的模板目录时,它将映射到global/Magento/backend,即non-existent。为了解决这个问题,我不得不在我的构造函数中手动添加它:

/** @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')
);

修复后,问题解决了,我可以发送e-mail。

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/1673.html,转载请务必附带本地址声明。