Jugando con Magento 2 pero me encuentro con un problema que no puedo entender. El administrador de objetos intenta crear una instancia de la clase abstracta, esto da un error fatal. ¿Alguien sabe qué podría causar esto o señalarme en la dirección correcta?
El error
Fatal error: Cannot instantiate abstract class Magento\Framework\Model\Resource\AbstractResource in /lib/internal/Magento/Framework/ObjectManager/Factory/Dynamic/Developer.php on line 75
El problema
Mi módulo tiene un modelo que extiende el \Magento\Quote\Model\Quote
. El constructor de este modelo tiene la siguiente línea que inyecta esto:
\Magento\Framework\Model\Resource\AbstractResource $resource = null,
.
El controlador que está creando instancias del modelo extiende \Magento\Backend\App\Action
y utiliza $this->_objectManager->create()
para crear instancias del modelo.
Lo que no puedo entender es que si ejemplifico el modelo de Magento simplemente funciona, pero si ejemplifico mi modelo, intenta instanciar esta clase abstracta arrojando el error anterior. ¿Qué le dice al administrador de objetos que haga esto y cómo puedo resolver mi problema?
Mi primer pensamiento fue que Magento usa el di.xml
para reemplazar esto, ejecutar esto o algo así, este no fue el caso.
Gracias por tomarse el tiempo de leer esto. Se agradece cualquier ayuda o aportación sobre este tema.
fuente
__construct
método de su modelo.Respuestas:
Esto puede suceder si su subclase agregó nuevas dependencias después de las dependencias opcionales existentes de la clase principal.
Fragmento del padre
Cómo el código puede alterar lo que es opcional
El Administrador de objetos de Magento 2 intentará inyectar los parámetros necesarios. Entonces esto podría suceder si agrega un parámetro requerido al final del constructor.
Puede solucionar esto moviendo cualquier nuevo parámetro requerido por encima de los opcionales.
fuente
Algunas veces se actualizó algún módulo y las referencias bajo / generadas aún no se actualizaron.
Solo haz un
bin/magento setup:di:compile
e intenta de nuevo.(Me funcionó al actualizar un módulo de pago y / el proceso de pago no se cargó)
fuente