Llamar a una función miembro setActive () en boolean

10

Encontré el siguiente problema cuando intentaba instalar un módulo. Cuando intento acceder al panel de administración en mi magento obtengo:

Llame a una función miembro setActive () en boolean en C: \ xampp \ htdocs \ project \ vendor \ magento \ module-backend \ Model \ View \ Result \ Page.php en la línea 27

Deshabilité todos los módulos personalizados y de terceros, compilé el código pero aún recibo este error.

EDITAR: Hice un var_dump($itemId)justo debajo de la línea donde está el error y el $itemides ' Magento_Backend::dashboard'.

EDITAR 2: El error se debe a que la línea " $this->layout->getBlock('menu');" anterior devuelve falso. Sin embargo, no puedo encontrar por qué sucede esto

Sotiris Oik
fuente

Respuestas:

14

Intentaré esto para resolver el problema si el error setActive () llegó después setup:di:compilede que el período de sesión se destruya

vaya al directorio de Magento y luego elimine el género de archivo ted by di: compile is path: -

magento\generated\metadata\global.php elimine este archivo y luego haga referencia a su página

Esta es una solución temporal para este error en el servidor local.

Nirali
fuente
Ya lo eliminé y todavía no funciona.
Bhavin Shah
En realidad funcionó para mí, sin embargo, ¿es seguro eliminar este archivo?
Greg
sí, es seguro eliminarlo siempre que realice una configuración: actualice después
John
Esto funcionó para mí. Gracias.
Riddhish Bhayani
Esto funcionó para mí también.
Magento Learner
6

Tuve la misma situación en el desarrollo de módulos propios (creé / cambié los archivos de diseño para la cuadrícula en adminhtml). Intenta limpiar el caché y cambia al modo de desarrollo:

$ ./bin/magento cache:clean
$ ./bin/magento deploy:mode:set developer

Supongo que algunas cosas en caché no se limpian en cache:cleany setup:di:compileen modo de producción. Puede volver al modo de producción si el error desaparece en el modo de desarrollo.

Alex Gusev
fuente
¡Creo que hice lo mismo! Fue un problema de archivo de diseño. ¡Gracias!
Sotiris Oik
1
php bin / magento setup: di: compile - ejecuté este comando y resolvió mi problema
Pandurang
2

Intente eliminar pub/staticy var/cacheluego ejecute los siguientes comandos

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

Después de eso funcionará

Noni
fuente
1
@Priyank Estaba en la misma situación, lo busco en Google y encuentro esa pregunta en Google, una vez que pude resolver el problema, enseñé que es mejor compartir la solución. Tal vez simplemente no te gusta porque necesitas alguna insignia u otra cosa.
Noni el
0

Cuando lo hace getBlock(), devuelve el bloque o devuelve falso si no puede encontrarlo. Necesita tener un cheque en el lugar algo como:

$block = $layout->getBlock('name);
If ($block){
//execute the rest
}

La razón por la que no puede encontrar su bloque es algo para lo que necesitaría más detalles. Si está utilizando un archivo xml de diseño, asegúrese de que el bloque y la clase del bloque no tengan ningún error.

Código compacto
fuente
0

El problema es que el diseño xml de esta ruta del controlador no se carga correctamente.

Verifique que el nombre y el espacio de nombres del controlador coincidan con el nombre del archivo de diseño. Cuida la sensibilidad a las mayúsculas y minúsculas.

Por ejemplo:

  • custom_module_admin_customcontroller_action.xml
  • namespace Custom\Module\Controller\Adminhtml\Customcontroller y no CustomController
Attila Kiss
fuente