Qual é a mensagem de erro:
O parâmetro necessário 'theme_dir' não foi passado
Está relacionado no Magento 2? E como esse problema pode ser resolvido?
Qual é a mensagem de erro:
O parâmetro necessário 'theme_dir' não foi passado
Está relacionado no Magento 2? E como esse problema pode ser resolvido?
Respostas:
Apenas no caso de você estar removendo o tema diretamente (não da maneira Magento).
Depois siga estes passos.
Exclua o conteúdo de app/design/frontend/<Vendor>
(certifique-se de fazer backup primeiro).
Exclua todo o conteúdo da pasta var/view_preprocessed
& pub/static/frontend
.
Vá para a sua theme
mesa e exclua a entrada do seu tema criado.
Depois disso...
Vá para sua core_config_data
tabela e procure theme
e você obterá registros de caminho, como design/theme/theme_id
substituir seu ID de tema padrão.
Liberar seu cache php bin/magento cache:flush
Deixe-me saber se você ainda tiver problemas depois disso.
theme
tabela, mas esqueci o core_config_data
valor.
setup:static-content:deploy
administrador, retornei à interface do usuário.
pub/static/.htaccess
foi não estar lá. obrigado
Essa mensagem de erro significa que você tem um tema configurado que não existe no sistema de arquivos (mais).
Pode ser facilmente corrigido selecionando um tema válido. Vá para Conteúdo -> Configuração , selecione o escopo (global, site, store_view) e altere o tema. Depois de fazer isso, você também deve removê-lo de Conteúdo -> Temas .
No meu caso, excluí um tema filho do diretório de fornecedores. Mas a entrada do banco de dados ainda estava lá na theme
tabela. Então, vá para a theme
tabela e exclua o registro que aponta para o tema excluído.
composer remove vendor/theme
?
rm -rf vendor/theme
Verifique se a theme
entrada e a entrada da tabela magento\app\design\frontend\<Vendor>
serão iguais.
Caso contrário, isso causa esse problema.
Remova o tema desnecessário via Admin -> Conteúdo -> Design -> Temas . Delete isso. Portanto, ele removerá a entrada de banco de dados também.
Se você apenas remover a pasta, ela não funcionará
Esse problema também pode ocorrer quando você estiver em um estado emulado, por exemplo, em um comando da CLI. Eu tive uma situação em que não pude enviar um email na CLI, porque o comando de agrupamento estava sendo executado em um estado emulado:
$this->appState->emulateAreaCode(AppArea::AREA_GLOBAL, function() {
// In this section the email was sent
});
No exemplo acima, quando o email tentava determinar seu diretório de modelo, ele seria mapeado para o global/Magento/backend
que não existe. Para corrigir isso, tive que adicioná-lo manualmente no meu construtor:
/** @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')
);
Após essa correção, o problema foi resolvido e eu poderia enviar o email.
Atualizar:
Quando se trata de enviar email usando a CLI, uma abordagem mais adequada seria usar emulação. Por exemplo:
/** @var Magento\Framework\App\State $state */
$state->emulateAreaCode(
'frontend',
[$this->accountManagement, 'initiatePasswordReset'],
[
$customer->getEmail(),
AccountManagement::EMAIL_REMINDER,
$customer->getWebsiteId()
]
);
Dessa forma, você não precisa de seus pequenos hacks sujos.
@hakre está correto. Eu recebi o mesmo erro Required parameter 'theme_dir' was not passed
. Abaixo, explico o que fiz para causar o erro:
Criei um tema no diretório app / design / frontend / MyVendorTheme2 / myThemeName2 e o configurei selecionando o tema " MyVendorTheme2 - myThemeName2 " no navegador Admin do Magento 2 ( Lojas> Configuração> CONFIGURAÇÕES DE TEMAS> GERAL> Design> Tema do projeto ) . Decidi, então, mover o diretório " myThemeName2 " (contendo meu novo tema) para uma pasta de fornecedor (existente) diferente " MyVendorTheme1 " app / design / frontend / MyVendorTheme1 / myThemeName2 e removi-o da pasta " MyVendorTheme2 " onde foi antes. Eu continuei a compilar ativos (ou seja grunt clean
, grunt exec:myThemeName2
,grunt less:myThemeName2
) e abra o navegador no subdomínio do tema (por exemplo, http: // myvirtualhostdomain: myport / myvendortheme1_mythemename2_magento2_quickstart / ).
Inicialmente, recebi um erro não especificado:
There has been an error processing your request
Exception printing is disabled by default for security reasons.
Error log record number:
Ativei o relatório de erros renomeando pub/errors/local.xml.sample
para local.xml
e atualizei a página. Foi-me apresentado o erro Required parameter 'theme_dir' was not passed
.
Resolvi o erro voltando ao meu navegador Admin do Magento 2 ( Lojas> Configuração> CONFIGURAÇÕES DE TEMAS> GERAL> Design> Tema do design ), que tinha meu tema de design anterior e agora inválido selecionado, então escolhi o correto.
1 - Use o comando abaixo para identificar os temas no painel de administração.
n98-magerun2 dev:theme:list
2 - Execute o comando para identificar os temas instalados:
ls -lha app/design/frontend/MyThemePackage/
3- Execute estes comandos abaixo para criar o tema que não existe:
n98-magerun2 deploy:mode:set developer
n98-magerun2 dev:console
make:theme frontend MyThemePackage MyThemeName
Se nada funcionou, não se esqueça de verificar a seção de categorias. Também há configurações de design. Verifique se o tema de design correto está atribuído. No meu caso, eu estava recebendo o erro apenas em algumas categorias.
Você pode remover o tema não utilizado do DB diretamente, executando a consulta abaixo:
delete from theme where theme_path in ('unusedtheme');
quando unthetheused é o tema não utilizado, e depois você clena seu cache
Em alguns casos, se você excluir o tema personalizado de maneira adequada, também enfrentará esse erro. Nesta situação:
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'
Atualize o erro de página desaparecido.
Eu resolvi o problema. No meu caso, o problema não era o Magento2, mas uma operação incorreta que fiz há algum tempo, como a seguir: criei um tema criando o caminho relativo em app / design / frontend / MyFolder / MyTheme e o registrei conforme explicado na documentação on-line do Magento 2. Decidi cancelar o tema e, em vez disso, use o comando apropriado: bin / magento theme: uninstall frontend / MyFolder / MyTheme Excluí as pastas diretamente. Esta não é uma boa operação, pois o banco de dados não é atualizado com as informações necessárias. Solução: com um editor de banco de dados como phpmyadmin, exclua o registro na tabela "Tema" correspondente às pastas excluídas. Espero que isso ajude!
Sei que essa pergunta é bastante antiga, mas desde que me deparei com isso hoje e descobri rapidamente qual era o meu problema, decidi postar minha resposta como um lembrete para todos aqueles que, como eu, usam o PhpStorm para trabalhar com o Magento: lembre-se de verificar seus arquivos ao mudar de ramificação.
No meu caso, o ramo em que eu estava trabalhando não tinha os arquivos de tema necessários (eles foram ocultados pelo PhpStorm quando mudei do ramo de temas para o ramo mestre) porque ainda não foram mesclados nele, portanto, o erro.
Espero que isso possa ajudar alguém.
exclua todos os arquivos temporários do tema que não estiver usando no site e exclua também do tema que não está usando e execute o cache: flush