Magento 2 Sınıfı * Fabrika mevcut değil


15

Bir eklenti yüklemeye çalışıyordum ve var / generation ve var / cache / * yazılımlarını kaldırdım. MAGE_MODE'yi kontrol ettim ve geliştiriciyim ama şimdi ön uç ve yöneticiye eriştiğimde, rastgele şeyler söyleyerek rastgele hatalar alıyorum: Class Magento\Customer\Model\CustomerFactory does not exist

Magento Sınıfı \ Satış \ Model \ ResourceModel \ Report \ OrderFactory mevcut değil

Sınıfların bazıları yaratılıyor, hepsi değil. Önbelleği ve nesil klasörünü temizlemeyi denedim ama sonra sadece aynı hataları alıyorum.

Herhangi bir fikir?


1
var / generation klasöründeki hakları kontrol edin
Marius

diyor drwxrwxrw- 5
jstrez77

Birkaç kez var / generation klasörünü temizlemek, önce ana sayfaya, temiz, sonra yönetici, sonra giriş, sonra temiz ... temizlemek zorunda kaldı ... ve çalıştı ... ?? Bunu anlamıyorum
jstrez77

'Var / generation' klasöründe kesinlikle izinler.
Travis van der Font

Yanıtlar:


21

Magento 2, var/generationdizin içinde Fabrika sınıfları üretir . Bu nedenle, bu dizinde klasör izni sorunu veya klasör sahibi sorunu varsa, fabrika sınıfı oluşturulamaz ve böyle bir hata alırsınız.

var/generationDizini temizleyip uygun izni ayarladığınızda bu hatanın çözülmesi gerekir.

Magento 2'de kod oluşturma hakkında daha fazla bilgi


Ayrıca olabilir var/diveya var/cachebkz. Devdocs.magento.com/guides/v2.2/install-gde/trouble/…
Yvan

10

Benim için var/generationklasörü kaldırdıktan sonra magento setup:di:compilegerekli tüm sınıfları üreten koştu .

(benim durumumda: Sonra önbellek sorunu ile karşılaştım, ilk önbellek klasörünü kaldırdım.)

Sonra sorunumu çözdü. Şerefe !!


1
sonunda dosya sahibini değiştirmek için gerekli
moshe beeri

5

Magento'da 2.2.2 ve üstü gibi yeni sürümlerde bu kod oluşturma yolu

<Magento root folder>/generated

bu nedenle bu klasör için izinleri de kontrol etmeniz gerekir. Magento kurulum dizininin kökünde aşağıdaki komutu çalıştırmanız gerekir, bu sorunu çözecektir:

sudo chmod -R 777 generated/

önbellek de başlangıçta
Hassan Ali Shahzad

benim için iş
matinict

1

Aşağıdaki komutların yürütülmesi gerekir:

sudo php -f bin/magento setup:di:compile 

sudo rm -rf pub/static/*/*; sudo rm -rf var/*/*; 
sudo php -f bin/magento setup:static-content:deploy -f  

sudo php bin/magento cache:clean

Ayrıca, uygun izin gereklidir. Üretimde ise, uygun izinleri yürütmeniz gerekir. Ancak, yerel makinede tam izni çalıştırabilirsiniz:

sudo chmod -R 777 *

1

777 İzin verin ve oluşturulan / kod klasörünün www-verilerine sahipliğini değiştirin ve ardından sudo php bin/magento setup:di:compileönbelleği temizle komutunu çalıştırın ve sorun çözüldü


1

Sadece <magento-root>/var/klasör izni sorunu.

CLI modunu kullanarak aşağıdaki komutu yürütün

sudo chmod -R 777 var/

0

Magento 2, var/generationklasörde fabrika sınıflarını oluşturur ve içine yeni bir parametre eklerseniz __construct()ve bunun Fabrika sınıfı yoksa, Magento 2 yukarıdaki hata iletisini atar. Sorunuz için zaten verilen birkaç çözüm olsa da, size nesil klasörünüzü temizlemenizi gerektirmeyen başka bir çözüm önerebilirim. Fabrika sınıflarıyla ilgili herhangi bir değişiklik yapıldıktan sonra lütfen aşağıdaki komutu kullanın:

bin/magento setup:di:compile

Bu komut üretim sunucusunda daha yararlı olabilir.


-2

Sınıf ... Fabrika yok, model sınıfınızın yüklü olmadığı anlamına gelir. Magento 2 olarak modüler programlamaya dayalı olarak, açıkça kullanmak istediğimiz model sınıfını belirtmemiz gerekiyor. Model sınıfımızı iki tipte kullanabiliriz:

1. "kullanım" ile

use Magento\Customer\Setup\CustomerSetupFactory;

public function __construct(CustomerSetupFactory $customerSetupFactory)
{
    $this->customerSetupFactory = $customerSetupFactory;
}
  1. Direkt olarak

    public function __construct(Magento\Customer\Setup\CustomerSetupFactory $customerSetupFactory){
    
    $this->customerSetupFactory = $customerSetupFactory;
    
    }

Eklentinizin URL'sini ( http://domain.com/yourmodu ön adı) Magento'dan tarayıcınızda aşağıdaki gibi modülünüz için kod oluşturduğunuzda:

\var\generation\Your Vendor Directory\Your Module Directory\Controller
\var\generation\Your Vendor Directory\Your Module Directory\Model

Sizin durumunuzda "CustomerFactory" yi kontrol etmeniz ve "OrderFactory" yukarıdaki formatta kullanılıp kullanılmadığını kontrol etmeniz gerekir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.