Я пытался установить плагин, и я удалил var / generation и var / cache / *. Я проверил MAGE_MODE и являюсь разработчиком, но теперь, когда я получаю доступ к интерфейсу и администратору, я получаю случайные ошибки, говорящие о таких вещах, как:
Class Magento\Customer\Model\CustomerFactory does not exist
Класс Magento \ Sales \ Model \ ResourceModel \ Report \ OrderFactory не существует
Некоторые классы создаются, но не все. Я снова попытался очистить кеш и папку для генерации, но потом я получаю те же ошибки.
Есть идеи?
Ответы:
Magento 2 генерирует фабричные классы внутри
var/generation
каталога. Таким образом, если существует проблема с правами доступа к папке или владельцем папки с этим каталогом, то фабричный класс не может быть сгенерирован, и вы получаете такую ошибку.Когда вы очистите
var/generation
каталог и установите для него соответствующее разрешение, эта ошибка должна быть устранена.Подробнее о генерации кода в Magento 2
источник
var/di
илиvar/cache
, см. Devdocs.magento.com/guides/v2.2/install-gde/trouble/…Для меня я удалил
var/generation
папку, затем я запустил,magento setup:di:compile
который сгенерировал все необходимые классы.(в моем случае: тогда я столкнулся с проблемой кеша, я удалил исходную папку кеша.)
Тогда это решило мою проблему. Ура !!
источник
В новых версиях magento, таких как 2.2.2 и выше, этот путь генерации кода изменен на
поэтому вам необходимо проверить разрешения для этой папки. Вам нужно выполнить следующую команду в корне установочного каталога Magento, чтобы решить эту проблему:
источник
Следующие команды необходимы для выполнения:
Также необходимо соответствующее разрешение. Если на производстве, вам необходимо выполнить соответствующие разрешения. Но на локальной машине вы можете запустить полное разрешение:
источник
Дайте разрешение 777 и смените владельца на www-data сгенерированной папки / code, а затем запустите команду
sudo php bin/magento setup:di:compile
clear cache и бум, ваша проблема решенаисточник
Это просто
<magento-root>/var/
проблема с разрешением папки.Выполните команду ниже, используя режим CLI
источник
Magento 2 создает классы фабрики в
var/generation
папке, и если вы добавляете новый параметр в свой__construct()
класс, а его класс Factory не существует, то Magento 2 выдает вышеуказанное сообщение об ошибке. Несмотря на то, что есть несколько решений, которые уже дают на ваш вопрос, я могу предложить вам другое решение, которое не требует очистки папки вашего поколения. Пожалуйста, используйте приведенную ниже команду после внесения любых изменений, связанных с классами Factory:Эта команда может быть более полезна на производственном сервере.
источник
Класс ... Завод не существует означает, что класс вашей модели не загружен. Так как Magento 2 основан на модульном программировании, нам нужно указать класс модели, который мы хотим использовать явно. Мы можем использовать наш модельный класс в двух типах:
1. «использовать»
непосредственно
Когда вы нажимаете на URL ( http://domain.com/your module frontname) вашего плагина в браузере, Magento генерирует код для вашего модуля, как показано ниже:
В вашем случае вам нужно проверить, что «CustomerFactory» и «OrderFactory» используется в вышеуказанном формате или нет.
источник