Aufruf einer Mitgliedsfunktion setActive () auf boolean

10

Beim Versuch, ein Modul zu installieren, ist das folgende Problem aufgetreten. Wenn ich versuche, auf das Admin-Panel meines Magento zuzugreifen, wird Folgendes angezeigt:

Rufen Sie eine Mitgliedsfunktion setActive () auf boolean in C: \ xampp \ htdocs \ project \ vendor \ magento \ module-backend \ Model \ View \ Result \ Page.php in Zeile 27 auf

Ich habe alle Module von Drittanbietern und benutzerdefinierten Modulen deaktiviert. Ich habe den Code kompiliert, erhalte aber immer noch diesen Fehler.

EDIT: Ich habe ein var_dump($itemId)knapp unterhalb der Zeile, wo der Fehler ist und das $itemidist ' Magento_Backend::dashboard'.

EDIT 2: Der Fehler liegt daran, dass die $this->layout->getBlock('menu');obige Zeile " " false zurückgibt. Ich kann jedoch nicht herausfinden, warum dies geschieht

Sotiris Oik
quelle
Noch keine Lösung. Schauen Sie weiter auf github.com/magento/magento2/issues/13504 github.com/magento/magento2/issues/11526
zhartaunik

Antworten:

14

Ich werde versuchen, das Problem zu lösen, wenn setActive () error () setup:di:compiledanach eintrifft, weil die Sitzung zerstört ist

Gehen Sie also in das Magento-Verzeichnis und löschen Sie das von di: compile is path: - angegebene Dateigenre.

magento\generated\metadata\global.php Löschen Sie diese Datei und verweisen Sie anschließend auf Ihre Seite

Dies ist eine vorübergehende Lösung für diesen Fehler auf dem lokalen Server.

Nirali
quelle
Ich habe es bereits entfernt und arbeite immer noch nicht.
Bhavin Shah
Es hat tatsächlich bei mir funktioniert. Ist es jedoch sicher, diese Datei zu entfernen?
Greg
Ja, es ist sicher zu entfernen, solange Sie ein Setup durchführen: Upgrade danach
John
Das hat bei mir funktioniert. Vielen Dank.
Riddhish Bhayani
Das hat auch bei mir funktioniert.
Magento-Lernender
6

Ich hatte die gleiche Situation bei der Entwicklung eigener Module (ich habe Layoutdateien für Grid in adminhtml erstellt / geändert). Versuchen Sie, den Cache zu leeren und in den Entwicklungsmodus zu wechseln:

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

Ich nehme an, dass einige zwischengespeicherte Inhalte im cache:cleanund setup:di:compileim Produktionsmodus nicht bereinigt werden. Sie können wieder in den Produktionsmodus wechseln, wenn im Entwicklungsmodus ein Fehler auftritt.

Alex Gusev
quelle
Ich glaube, ich habe das Gleiche getan! Es war ein Problem mit der Layoutdatei. Vielen Dank!
Sotiris Oik
1
php bin / magento setup: di: compile - hat diesen Befehl ausgeführt und mein Problem behoben
Pandurang
2

Versuchen Sie, die folgenden Befehle zu entfernen pub/staticund var/cachedann auszuführen

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

Danach wird es funktionieren

Noni
quelle
1
@Priyank Ich war in der gleichen Situation, ich google es und finde diese Frage bei Google. Sobald ich das Problem lösen musste, lehrte ich es besser, die Lösung zu teilen. Vielleicht magst du es einfach nicht, weil du ein Abzeichen oder etwas anderes brauchst.
Noni
0

Wenn Sie dies tun getBlock(), wird der Block zurückgegeben, oder es wird false zurückgegeben, wenn er nicht gefunden werden kann. Sie müssen einen Check-in haben, etwa:

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

Der Grund, warum es Ihren Block nicht finden kann, ist etwas, für das ich mehr Details benötigen würde. Wenn Sie eine Layout-XML-Datei verwenden, stellen Sie sicher, dass der Block und die Klasse des Blocks keine Fehler aufweisen.

CompactCode
quelle
0

Das Problem ist, dass die Layout-XML dieses Controller-Pfads nicht richtig geladen wird.

Überprüfen Sie, ob der Name und der Namespace des Controllers mit dem Namen der Layoutdatei übereinstimmen. Achten Sie auf die Groß- und Kleinschreibung.

Zum Beispiel:

  • custom_module_admin_customcontroller_action.xml
  • namespace Custom\Module\Controller\Adminhtml\Customcontroller und nicht CustomController
Attila Kuss
quelle