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

Sotiris Oik
la source
Pas encore de solution. Continuez à regarder github.com/magento/magento2/issues/13504 github.com/magento/magento2/issues/11526
zhartaunik

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.

Nirali
la source
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.

Alex Gusev
la source
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

Noni
la source
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.

CompactCode
la source
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
Attila Kiss
la source