Kelas Magento 2 * Pabrik tidak ada


15

Saya mencoba menginstal plugin dan saya menghapus var / generation dan var / cache / *. Saya telah memeriksa MAGE_MODE dan saya dalam pengembang tetapi sekarang ketika saya mengakses front-end dan admin saya mendapatkan kesalahan acak yang mengatakan hal-hal jahat seperti: Class Magento\Customer\Model\CustomerFactory does not exist

Kelas Magento \ Penjualan \ Model \ ResourceModel \ Laporan \ OrderFactory tidak ada

Beberapa kelas sedang dibuat, tetapi tidak semua. Saya sudah mencoba membersihkan cache lagi, dan membuat folder tapi kemudian saya hanya mendapatkan kesalahan yang sama.

Ada ide?


1
periksa hak pada folder var / generation
Marius

katanya drwxrwxrw- 5
jstrez77

Saya harus membersihkan folder var / generation beberapa kali, buka home page dulu, bersih, lalu admin, lalu login, lalu bersihkan ... dan berhasil ... ?? Saya tidak mengerti ini
jstrez77

Izin yang pasti di dalam folder 'var / generation'.
Travis van der Font

Jawaban:


21

Magento 2 menghasilkan kelas-kelas Pabrik di dalam var/generationdirektori. Jadi, jika ada masalah izin folder atau masalah pemilik folder dengan direktori itu maka kelas pabrik tidak dapat dibuat dan Anda mendapatkan kesalahan tersebut.

Ketika Anda menghapus var/generationdirektori dan mengatur izin yang sesuai untuk itu maka kesalahan ini harus diselesaikan.

Lihat lebih lanjut tentang pembuatan Kode di Magento 2



10

Bagi saya, saya menghapus var/generationfolder lalu menjalankan magento setup:di:compileyang menghasilkan semua kelas yang diperlukan.

(dalam kasus saya: Kemudian saya menemukan masalah cache, saya menghapus folder cache awal.)

Lalu itu memecahkan masalah saya. Bersulang !!


1
diperlukan untuk mengubah pemilik file di akhir
moshe beeri

5

Di magento, versi baru seperti 2.2.2 dan di atas jalur pembuatan kode ini diubah menjadi

<Magento root folder>/generated

jadi Anda perlu memeriksa izin untuk folder ini juga. Anda perlu menjalankan perintah berikut di root direktori instalasi Magento akan menyelesaikan masalah ini:

sudo chmod -R 777 generated/

hapus cache juga di awal
Hassan Ali Shahzad

ini bekerja untuk saya
matinict

1

Perintah berikut ini perlu dijalankan:

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

Juga, izin yang tepat diperlukan. Jika sedang diproduksi, Anda perlu menjalankan izin yang tepat. Tetapi, pada mesin lokal, Anda dapat menjalankan izin penuh:

sudo chmod -R 777 *

1

Berikan 777 izin dan ubah kepemilikan menjadi www-data folder / kode yang dihasilkan lalu jalankan perintah sudo php bin/magento setup:di:compilehapus cache dan booming masalah Anda terpecahkan


1

Ini hanya <magento-root>/var/masalah izin folder.

Jalankan perintah di bawah ini menggunakan mode CLI

sudo chmod -R 777 var/

0

Magento 2 membuat kelas pabrik di var/generationfolder dan jika Anda menambahkan parameter baru di kelas Anda __construct()dan itu tidak ada maka Magento 2 melempar pesan kesalahan di atas. Meskipun ada beberapa solusi yang sudah diberikan untuk pertanyaan Anda, saya dapat menyarankan Anda solusi lain yang tidak mengharuskan Anda untuk menghapus folder generasi Anda. Silakan gunakan perintah di bawah ini setelah perubahan dibuat terkait dengan kelas pabrik:

bin/magento setup:di:compile

Perintah ini dapat lebih bermanfaat di server produksi.


-2

Kelas ... Pabrik tidak ada berarti kelas model Anda tidak dimuat. Sebagai Magento 2 didasarkan pada pemrograman modular sehingga kita perlu menentukan kelas model di mana kita ingin menggunakan secara eksplisit. Kita dapat menggunakan kelas model kita dalam dua jenis:

1.dengan "menggunakan"

use Magento\Customer\Setup\CustomerSetupFactory;

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

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

Ketika Anda menekan URL ( http://domain.com/nama depan modul Anda) plugin Anda di browser daripada Magento menghasilkan kode untuk modul Anda seperti di bawah ini:

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

Dalam kasus Anda, Anda perlu memeriksa "CustomerFactory" dan "OrderFactory" digunakan sebagai format di atas atau tidak.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.