Appel à une fonction membre setActive () sur booléen


10

J'ai rencontré le problème suivant lorsque j'essayais d'installer un module. Lorsque j'essaie d'accéder au panneau d'administration sur mon magento, j'obtiens:

Appelez une fonction membre setActive () sur booléen dans C: \ xampp \ htdocs \ project \ vendor \ magento \ module-backend \ Model \ View \ Result \ Page.php à la ligne 27

J'ai désactivé tous les modules tiers et personnalisés, j'ai compilé le code mais j'obtiens toujours cette erreur.

EDIT: J'ai fait var_dump($itemId)juste en dessous de la ligne où se trouve l'erreur et l' $itemidest ' Magento_Backend::dashboard'.

EDIT 2: L'erreur est due au fait que la ligne " $this->layout->getBlock('menu');" ci-dessus renvoie false. Je ne trouve pas pourquoi cela se produit


Réponses:


14

Je vais essayer de résoudre ce problème si l'erreur setActive () () est arrivée après, setup:di:compilecar la session est détruite

alors allez dans le répertoire Magento puis supprimez le genre de fichier ted par di: compile is path: -

magento\generated\metadata\global.php supprimez ce fichier puis référez votre page

il s'agit d'une solution temporaire pour cette erreur sur le serveur local.


Je l'ai déjà retiré et ne fonctionne toujours pas.
Bhavin Shah

En fait, cela a fonctionné pour moi, est-il sûr de supprimer ce fichier?
Greg

oui, il est sûr de supprimer aussi longtemps que vous effectuez une configuration: mise à niveau après
John

Cela a fonctionné pour moi. Merci.
Riddhish Bhayani

Cela a également fonctionné pour moi.
Magento Learner

6

J'ai eu la même situation dans le développement de modules propres (j'ai créé / modifié des fichiers de mise en page pour la grille en adminhtml). Essayez de nettoyer le cache et de passer en mode développement:

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

Je suppose que certaines choses en cache ne sont pas nettoyées sur cache:cleanet setup:di:compileen mode production. Vous pouvez revenir en mode production si l'erreur disparaîtra en mode développement.


Je pense que j'ai fait la même chose! C'était un problème de fichier de mise en page. Merci!
Sotiris Oik

1
php bin / magento setup: di: compile - a exécuté cette commande et résolu mon problème
Pandurang

2

Essayez de supprimer pub/static, var/cachepuis exécutez les commandes ci-dessous

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

Après ça ça marchera


1
@Priyank J'étais dans la même situation, je la recherche sur Google et trouve cette question sur Google, une fois que j'ai réussi à résoudre le problème, j'ai appris à mieux partager la solution. Peut-être que vous n'aimez pas parce que vous avez besoin d'un badge ou de quelque chose d'autre.
Noni

0

Lorsque vous le faites, getBlock()il retourne le bloc ou il renvoie false s'il ne le trouve pas. Vous devez avoir un chèque en place quelque chose comme:

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

La raison pour laquelle il ne peut pas trouver votre bloc est quelque chose pour laquelle j'aurais besoin de plus de détails. Si vous utilisez un fichier xml de mise en page, assurez-vous que le bloc et la classe du bloc ne contiennent aucune erreur.


0

Le problème est que le XML de mise en page de ce chemin de contrôleur ne se charge pas correctement.

Vérifiez que le nom et l'espace de noms du contrôleur correspondent au nom du fichier de mise en page. Prenez soin de la sensibilité à la casse.

Par exemple:

  • custom_module_admin_customcontroller_action.xml
  • namespace Custom\Module\Controller\Adminhtml\Customcontroller et pas CustomController
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.