【问题标题】:magento 2 Required parameter 'theme_dir' was not passedmagento 2 未传递必需参数“theme_dir”
【发布时间】:2015-11-26 14:39:12
【问题描述】:

安装主题并在后端应用主题(系统->配置->常规->主题),清除缓存并刷新前端它在magento2中出现错误。错误如下

Required parameter 'theme_dir' was not passed
#0 /var/www/demos/magento2new/vendor/magento/framework/View/Design/Fallback/Rule/Theme.php(69): Magento\Framework\View\Design\Fallback\Rule\Simple->getPatternDirs(Array)
#1 /var/www/demos/magento2new/vendor/magento/framework/View/Design/FileResolution/Fallback/Resolver/Simple.php(93): Magento\Framework\View\Design\Fallback\Rule\Theme->getPatternDirs(Array)
#2 /var/www/demos/magento2new/vendor/magento/framework/View/Design/FileResolution/Fallback/Resolver/Simple.php(64): Magento\Framework\View\Design\FileResolution\Fallback\Resolver\Simple->resolveFile(Object(Magento\Framework\View\Design\Fallback\Rule\Theme), 'i18n/en_US.csv', Array)
#3 /var/www/demos/magento2new/vendor/magento/framework/View/Design/FileResolution/Fallback/LocaleFile.php(42): Magento\Framework\View\Design\FileResolution\Fallback\Resolver\Simple->resolve('locale', 'i18n/en_US.csv', 'frontend', Object(Magento\Theme\Model\Theme), 'en_US', NULL)
#4 /var/www/demos/magento2new/vendor/magento/framework/View/FileSystem.php(103): Magento\Framework\View\Design\FileResolution\Fallback\LocaleFile->getFile('frontend', Object(Magento\Theme\Model\Theme), 'en_US', 'i18n/en_US.csv')

在主题中添加了registration.php,但前端是空白页...

【问题讨论】:

  • 从第一印象看,magento 似乎没有识别registration.php 文件。您可以删除主题并将其与registration.php一起放回原处并运行setup upgrade命令吗?
  • 升级命令是#php bin/magento setup:upgrade 对吗?
  • php -f bin/magento setup: 从 Magento root 升级。
  • 在 Magento Stackexchange 上:“Required parameter 'theme_dir' was not passed”.

标签: configuration themes magento2


【解决方案1】:

从错误看来,您配置了一个文件系统上不存在的主题(不再存在)。 它可以通过选择一个有效的主题来轻松修复。 转到内容 -> 配置,选择范围(全局、网站、store_view)并更改主题。完成后,您还应该将其从内容 -> 主题中删除。

(或)

如果您的主题目录没有适当的权限,也可能是这种情况

【讨论】:

  • 这解决了我们的问题。我们有一个旧主题没有使用,但在文件系统中仍然不可用,显然 Magento 2 在这些情况下会导致产品更新崩溃。我们通过删除旧主题、重新选择当前主题并清理缓存来解决此问题
【解决方案2】:

删除主题表中未在系统中定义的主题的行..

如果您创建了新主题,它应该显示在这里...删除另一个不活跃或不必要的主题..

【讨论】:

    【解决方案3】:

    如果您正在构建新主题,或试图找出新安装的主题导致网站崩溃的原因,则可能是由于大小写问题。在 linux 中,确保您的主题所在的目录具有正确的大小写,以使其正常工作。不能保证主题开发人员使用的是 linux 系统(他们可能一直在使用 windows,是的,它可以运行 magento + php + windows,尽管它很杂乱)。这将允许主题开发人员忽略目录/文件名大写,并可能发布与强制大写的文件系统不兼容的主题。

    在 linux 中,您可以将所有这些文件放在一个目录中...

    • test.php
    • Test.php
    • TEST.php
    • tEst.php
    • test.PHP

    你明白了....

    $theme->getFullPath() 可能会输出类似 /design/Yourcompany/Yourtheme 的内容,但您的实际路径可能是 design/Yourcompany/yourtheme。这种大小写在 linux 系统上非常严格,会引起各种头痛。

    registration.php 文件与目录具有相同的大小写以及 $theme->getFullPath() 的输出也非常重要。所有这些都必须匹配。

    如果你打算调试 $theme->getFullPath(),它在 \Magento\Framework\View\Design\Fallback\Rule\Simple 类中。

    【讨论】:

    • 这对我来说不是问题
    【解决方案4】:

    我遇到了同样的问题,修复主题文件夹权限解决了问题

    【讨论】:

    • @cjohansson 也许你已经删除了一个主题而没有从数据库中删除它?或者主题注册文件不正确
    • 不,这些都不是问题
    【解决方案5】:

    当您添加或编辑产品时,请转到设计部分并更改布局选项。

    【讨论】:

      【解决方案6】:

      步骤:

      1. 更改当前商店的 theme_id 的值:

        SELECT * FROM core_config_data WHERE path LIKE 'design/theme/theme_id';
        

        在此处更新稳定的主题 ID。

      2. 刷新配置缓存:

        php bin\magento cache:flush config
        

      【讨论】:

        【解决方案7】:

        当您在 app/design/frontend// 中删除 Magento 2 的主题文件夹,但未从数据库中删除主题数据时,会发生该错误。

        在 Magento 2 管理部分,转到:内容 => 设计 => 配置并将主题更改为有效主题将修复此错误

        另一个解决方案是使用这个 MySQL 命令从数据库中删除无效主题

        mysql -u <dbuser> -p -e "delete from <dbname>.theme where theme_path ='<Vendorname>/<themename>' AND area ='frontend' limit 1"
        

        参考来源:https://magentip.com/required-parameter-theme_dir-was-not-passed-magento-2/

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-05-20
          • 1970-01-01
          • 2017-08-09
          • 2013-09-02
          • 1970-01-01
          • 2016-11-14
          • 2012-01-16
          相关资源
          最近更新 更多