Error fatal: no se puede crear una instancia de la interfaz

12

Mi tienda magento está arrojando este error:

Error grave: no se puede crear una instancia de la interfaz Magento \ Framework \ View \ Design \ Theme \ ResolverInterface en /Library/WebServer/Documents/magento/vendor/magento/framework/ObjectManager/Factory/Dynamic/Developer.php en la línea 73

No sé por qué comenzó a aparecer. No hice ninguna instalación de módulo nuevo. La tienda funcionaba bien.

Verifiqué los permisos de archivo y no veo ningún problema allí. También elimine / var / dir y, creo, todas las carpetas / archivos donde se crearon.

[EDITAR] La preferencia se define vendor / magento / magento2-base / app / etc / di.xml

<preference for="Magento\Framework\View\Design\Theme\ResolverInterface" type="Magento\Theme\Model\Theme\Resolver" /> 
Filipe Sá
fuente
1
Espero que en su módulo o código personalizado intente utilizar Magento \ Framework \ View \ Design \ Theme \ ResolverInterface en el constructor o administrador de objetos
Pradeep Kumar
@PradeepKumar No. No lo soy.
Filipe Sá
2
borre su caché y el contenido de var/generation.
Marius
@Marius como se indica en la pregunta, ya he eliminado la carpeta / var / * por completo.
Filipe Sá
Lo siento. Perdí esa línea.
Marius

Respuestas:

23

Si usa redis, ejecute:


redis-cli flushall



Si también usa un entorno como ansible ( lxc - server), deberá hacer ese comando en el contenedor. Además hice lo siguiente:

  • Claro var/generation
  • Claro var/cache
  • Habilitar módulos de Magento: bin/magento module:enable --all
  • Compilar DI bin/magento setup:di:compile
Gorr1995
fuente
1
había tantas soluciones engañosas y esto funcionó de inmediato
3
Habilitar módulos Magento: módulo bin / magento: habilitar --todos - Trabajó para mí
Agnes
¡NO! ¡No es una buena práctica! bin / magento module: enable --all is like chmod -R 777 :(
Kārlis Millers
6

Tuve este error y se resolvió borrando la carpeta var y luego ejecutándolo setup:upgrade. Si esto no lo resuelve, busque errores en los di.xmlarchivos

Claudiu Creanga
fuente
trabajó para mí, en concretovar/cache
Joshua Soileau
Gracias redis-cli flushallfuncionó para mí.
Sarjan Gautam
5

Ejecute el siguiente comando y verifique.

rm -rf generated

rm -rf var/*

Trabajó para mi.

Kazim Noorani
fuente
2

Esto funcionó para mí:

 sudo apt-get install php-intl

 sudo service apache2 reload
abahet
fuente
1

En mi caso, tuve que eliminar un módulo y simplemente eliminé los archivos del módulo sin seguir los métodos adecuados y luego este error apareció en la pantalla en todas partes. Después de buscar mucho, terminé por reemplazar los archivos del módulo nuevamente en el mismo directorio y eliminé todas las carpetas requeridas de var y ejecuté los siguientes comandos.

php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy

y todo fue arreglado. Luego seguí formas adecuadas de quitar el módulo. Espero que esto ahorre tiempo a alguien. :-)

MTM
fuente
1

Borrar el caché rm -rf var/cache

Si redis está habilitado, borre redis db usando la línea de comando:

$> redis-cli
$> flushall
Arvind07
fuente
0
php bin/magento c:c
php bin/magento setup:di:compile

solucionará tu problema

Dexture
fuente
0

Volcar el compositor de carga automática de archivos:

$ composer dumpautoload

Entonces:

bin/magento setup:upgrade
bin/magento setup:di:compile
usuario80131
fuente
0

Este error se crea cuando intenta crear (nuevo) un objeto (clase) que de hecho es una interfaz. Esto normalmente ocurre cuando no ha anulado la interfaz para una clase en el archivo di.xml. O ha anulado el en el di.xml en el directorio adminhtml y está intentando utilizar la interfaz en la interfaz.

interface MyInterface{
   pubic function getVariable(): int
}

class MyClass 
implements MyInterface{

   protected $variable;

   pubic function getVariable(){
      return $this->variable;
   }
}

$variable = new MyInterface();
Dallas Clarke
fuente