Creo que lo ha hecho en su controlador, es posible que deba inicializar el administrador de objetos mediante el uso de la clase de contexto en el método __construct.
Hola, ya llamo método de construcción en mi archivo de clase de bloque, por favor revise el siguiente enlace para obtener más detalles codebeautify.org/alleditor/0b796a Y gracias por la ayuda.
Pratik
Esta no debería ser la respuesta aceptada. No debe usar Objectmanager de la manera descrita.
seanbreeden
22
Si necesita el ID de categoría en Magento2, puede obtener los valores utilizando los siguientes pasos a seguir
1.Incluya el uso Magento\Framework\Registryen su archivo de clase.
<?php
/**
* class file
*/namespaceVendor\Module\Model;useMagento\Framework\Registry;...
2.Cree un objeto para eso usando Object Manager o si lo está usando en el controlador, entonces asigne en su __construct()función como \Magento\Framework\Registry $registry:
Para obtener más información sobre la implementación en Magento2 de este concepto, consulte el archivo de clase y la función denominada función pública _initCategory(). En este método están registrando la categoría actual.
Lo anterior parece correcto, pero creo que saltar directamente al Registro no es el mejor enfoque. Magento ofrece un Layer Resolver que ya encapsula esa funcionalidad. (Consulte el bloque TopMenu en los complementos del catálogo)
Sugiero inyectar la clase \ Magento \ Catalog \ Model \ Layer \ Resolver y usarla para obtener la categoría actual. Aquí está el código:
Respuestas:
Creo que lo ha hecho en su controlador, es posible que deba inicializar el administrador de objetos mediante el uso de la clase de contexto en el método __construct.
fuente
Si necesita el ID de categoría en Magento2, puede obtener los valores utilizando los siguientes pasos a seguir
1.Incluya el uso
Magento\Framework\Registry
en su archivo de clase.2.Cree un objeto para eso usando Object Manager o si lo está usando en el controlador, entonces asigne en su
__construct()
función como\Magento\Framework\Registry $registry
:3. Luego, simplemente puede usarlo con la clase como:
Para obtener más información sobre la implementación en Magento2 de este concepto, consulte el archivo de clase y la función denominada función pública
_initCategory()
. En este método están registrando la categoría actual.fuente
Prueba este código. esto definitivamente te ayudará.
fuente
Lo anterior parece correcto, pero creo que saltar directamente al Registro no es el mejor enfoque. Magento ofrece un Layer Resolver que ya encapsula esa funcionalidad. (Consulte el bloque TopMenu en los complementos del catálogo)
Sugiero inyectar la clase \ Magento \ Catalog \ Model \ Layer \ Resolver y usarla para obtener la categoría actual. Aquí está el código:
Esto es lo que hace el método getCurrentCategory () real en la clase Resolver.
Como puede ver, todavía usa el registro, pero proporciona un respaldo en caso de que falle.
fuente