Вызов функции-члена setActive () для логического значения

10

Я столкнулся со следующей проблемой, когда пытался установить модуль. Когда я пытаюсь получить доступ к панели администратора на моем magento, я получаю:

Вызов функции-члена setActive () для логического значения в C: \ xampp \ htdocs \ project \ vendor \ magento \ module-backend \ Model \ View \ Result \ Page.php в строке 27

Я отключил все сторонние и пользовательские модули, скомпилировал код, но все еще получаю эту ошибку.

РЕДАКТИРОВАТЬ: я сделал var_dump($itemId)чуть ниже строки, где ошибка и $itemid' Magento_Backend::dashboard'.

РЕДАКТИРОВАТЬ 2: Ошибка в том, что строка " $this->layout->getBlock('menu');" выше возвращает false. Я не могу найти, хотя, почему это происходит

Сотирис Оик
источник
Решения пока нет. Продолжайте смотреть на github.com/magento/magento2/issues/13504 github.com/magento/magento2/issues/11526
Жартауник

Ответы:

14

Я постараюсь решить эту проблему, если setActive () error () прибыл после setup:di:compileтого как сеанс уничтожен

поэтому перейдите в каталог Magento, а затем удалите жанр файла с помощью di: compile is path: -

magento\generated\metadata\global.php удалите этот файл, затем после ссылки на вашу страницу

это временное решение для этой ошибки на локальном сервере.

Nirali
источник
Я уже удалил его и до сих пор не работает.
Бхавин Шах
Это на самом деле работает для меня, однако, безопасно ли удалить этот файл?
Грег
да, это безопасно удалить, пока вы делаете настройку: обновите потом
Джон
Это сработало для меня. Спасибо.
Riddhish Bhayani
Это сработало и для меня.
Magento Learner
6

У меня была такая же ситуация при разработке собственных модулей (я создал / изменил файлы макетов для сетки в adminhtml). Попробуйте очистить кеш и перейти в режим разработки:

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

Я предполагаю, что некоторые кэшированные данные не очищаются в cache:clean& setup:di:compileв производственном режиме. Вы можете вернуться обратно в рабочий режим, если ошибка исчезнет в режиме разработки.

Алекс Гусев
источник
Я думаю, что я сделал то же самое! Это была проблема с файлом макета. Спасибо!
Сотирис Оик,
1
php bin / magento setup: di: compile - выполнил эту команду и решил мою проблему
Pandurang
2

Попробуйте удалить, pub/staticа var/cacheзатем выполните следующие команды

php bin/magento setup:upgrade

php bin/magento setup:static-content:deploy

После этого будет работать

Нони
источник
1
@Priyank Я был в той же ситуации, я гуглю его и нахожу этот вопрос в гугле, как только мне удалось решить проблему, я научил ее лучше делиться решением. Возможно, вам просто не нравится, потому что вам нужен какой-то значок или что-то еще.
Нони
0

Когда вы это делаете, getBlock()он возвращает блок или возвращает false, если он не может его найти. Вы должны иметь чек на месте что-то вроде:

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

Причина, по которой он не может найти ваш блок - это то, для чего мне нужно больше деталей. Если вы используете XML-файл макета, убедитесь, что в блоке и классе блока нет ошибок.

CompactCode
источник
0

Проблема в том, что макет XML этого пути контроллера не загружается должным образом.

Убедитесь, что имя и пространство имен контроллера совпадают с именем файла макета. Позаботьтесь о чувствительности к регистру.

Например:

  • custom_module_admin_customcontroller_action.xml
  • namespace Custom\Module\Controller\Adminhtml\Customcontroller и не CustomController
Аттила Поцелуй
источник