Chamar para uma função de membro setActive () em booleano

10

Encontrei o seguinte problema quando estava tentando instalar um módulo. Quando tento acessar o painel de administração no meu magento, recebo:

Chame para uma função membro setActive () no booleano em C: \ xampp \ htdocs \ projeto \ vendedor \ magento \ módulo-back-end \ Model \ View \ Result \ Page.php na linha 27

Desativei todos os módulos personalizados e de terceiros, compilei o código, mas ainda recebo esse erro.

Edição: Eu fiz um var_dump($itemId)pouco abaixo da linha onde está o erro e $itemidé o ' Magento_Backend::dashboard'.

EDIT 2: O erro ocorre porque a linha " $this->layout->getBlock('menu');" acima retorna false. Não consigo descobrir por que isso está acontecendo

Sotiris Oik
fonte
Ainda não há solução. Continue olhando para github.com/magento/magento2/issues/13504 github.com/magento/magento2/issues/11526
zhartaunik

Respostas:

14

Vou tentar isso para resolver o problema se o erro setActive () () chegou depois que a setup:di:compilesessão é destruída

então vá para o diretório Magento e exclua o gênero do arquivo di: compile is path: -

magento\generated\metadata\global.php exclua este arquivo e depois consulte a sua página

Esta é uma solução temporária para esse erro no servidor local.

Nirali
fonte
Eu já o removi e ainda não está funcionando.
Bhavin Shah
Na verdade, funcionou para mim, no entanto, é seguro remover este arquivo?
Greg
sim, é seguro remover enquanto você fazer uma configuração: atualizar mais tarde
John
Isso funcionou para mim. Obrigado.
Riddhish Bhayani
Isso funcionou para mim também.
Magento Learner
6

Eu tive a mesma situação no desenvolvimento de módulos próprios (criei / alterei arquivos de layout para grade no adminhtml). Tente limpar o cache e alternar para o modo de desenvolvimento:

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

Acho que algumas coisas em cache não é limpo cache:cleane setup:di:compileem modo de produção. Você pode voltar ao modo de produção se ocorrer um erro no modo de desenvolvimento.

Alex Gusev
fonte
Eu acho que fiz a mesma coisa! Foi um problema de arquivo de layout. Obrigado!
Sotiris Oik 07/02
11
php bin / setup magento: di: compilação - executado este comando e resolveu o meu problema
Pandurang
2

Tente remover pub/statice var/cacheexecute os comandos abaixo

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

Depois disso, vai funcionar

Noni
fonte
11
@Priyank, eu estava na mesma situação, pesco no google e encontro essa pergunta no google. Depois que resolvi o problema, ensinei o melhor para compartilhar a solução. Talvez você simplesmente não goste, porque precisa de algum crachá ou qualquer outra coisa.
Noni
0

Quando você faz getBlock(), retorna o bloco ou retorna false se não conseguir encontrá-lo. Você precisa ter um check-in como algo como:

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

A razão pela qual ele não consegue encontrar seu bloco é algo para o qual eu precisaria de mais detalhes. Se você estiver usando um arquivo xml de layout, verifique se o bloco e a classe do bloco não possuem erros.

CompactCode
fonte
0

O problema é que o xml de layout deste caminho do controlador não está sendo carregado corretamente.

Verifique se o nome e o espaço para nome do controlador estão correspondendo ao nome do arquivo de layout. Cuide da sensibilidade do caso.

Por exemplo:

  • custom_module_admin_customcontroller_action.xml
  • namespace Custom\Module\Controller\Adminhtml\Customcontroller e não CustomController
Attila Kiss
fonte