Magento2.1.0 mostrando o erro O parâmetro obrigatório 'theme_dir' não foi passado ao salvar o produto em admin

17

Estou enfrentando esse erro O parâmetro obrigatório 'theme_dir' não foi passado quando tento salvar o produto no administrador. Eu verifiquei a configuração do tema que foi atribuída às lojas. Recentemente, atualizei o 2.0.7 para o 2.1.0 e verifiquei se o arquivo de registro de temas do diretório existe. Alguém encontrou esse problema.

Fabian Schmengler
fonte

Respostas:

42

Este erro aparece quando você remove uma pasta de modelo, que ainda é referenciada no banco de dados. A maneira mais simples de corrigir isso é, vá para o banco de dados e, na tabela 'theme', encontre o nome do tema que não existe app/design/frontend/package.

DELETE a referência ao tema ausente da tabela.

Vu Anh
fonte
Essa deve ser a resposta aceita.
Seanbreeden
PERFEITO .. ​​TRABALHOU COMO UM ENCANTO
Zorox
Essa deve ser a resposta aceita.
Daan van den Bergh
2 registros eram extras no meu banco de dados Eu detelei mas ainda não estava funcionando
HaFiz Umer 25/10
10

Posso confirmar que a resposta de Vu Anh funciona. Aqui está uma explicação de por que isso acontece quando os produtos são salvos , embora o tema excluído não seja usado em nenhum lugar:

Após salvar um produto, o cache da imagem é regenerado para todos os temas. Cada tema pode ter seus próprios formatos de tamanho de imagem, definidos etc/view.xmle todos serão gerados.

Mas, em vez de procurar os temas configurados em todas as lojas, o Magento passa por todos os temas da themetabela.

Se você não desinstalou corretamente um tema e acabou de remover os arquivos, a entrada órfã se refere a um caminho inexistente e a exceção descrita é lançada.

Fabian Schmengler
fonte
2

Eu tenho o mesmo erro O parâmetro obrigatório 'theme_dir' não foi passado . Eu trabalho com o 2.1.0 desde o início, não com a atualização. E eu tenho um atributo de produto personalizado "style".

O problema ocorre quando tento salvar a nova foto no material. Sem a imagem, o produto foi salvo normalmente.

Corrija com o comentário da exceção no arquivo:

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

Funcionou para mim. Mas acho que é um hack.

Galina
fonte
Definitivamente, este é um truque. Corrija o problema em vez de remover a exceção.
Daan van den Bergh
-2

Finalmente, eu o corrigi comentando a exceção abaixo 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
fonte
4
Mas isso não corrige o erro, apenas não o mostra mais. (Eu acho que a solução da Vu Anh é mais uma correção)
BvdVen
3
Esta não é a maneira correta de corrigir esse problema! Verifique a resposta de Vu Anh.
medina
2
Esta não é a melhor solução. Por favor, não faça isso
Ankit Shah