Magento 2 Enterprise: Buat Modul Baru di direktori vendor

17

Saya mencoba membuat modul baru dalam vendordirektori di Magento Enterprise 2.0.0. Modul tidak dapat dimuat setelah saya menjalankan Magento setup:upgrade.

Jika saya memindahkan file saya ke app/codedirektori, modul akan berhasil diatur.

Untuk Magento 2 edisi Perusahaan, semua modul ada di vendordirektori tetapi edisi Komunitas menggunakan app/codedirektori. Saya ingin tahu apakah mungkin untuk membuat modul khusus di vendordirektori. Jika ya, apa perbedaan antara membuat modul khusus di app/codedan vendor.

vendor/Test/Testing/registration.php

<?php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Test_Testing',
    __DIR__ );

vendor/Test/Testing/composer.json

{   "name": "test/testing",   "description": "Testing",   "require": {
    "php": "~5.5.0|~5.6.0|~7.0.0",
    "magento/framework": "100.0.*"   },   "type": "magento2-module",   "version": "0.1.0",   "license": [
    "proprietary"   ],   "autoload": {
    "files": [ "registration.php" ],
    "psr-4": {
      "Test\\Testing\\": ""
    }   } }

vendor/Test/Testing/etc/module.xml

<?xml version="1.0"?> <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Test_Testing" setup_version="0.1.0">
    </module> </config>
Jason Yip
sumber
Anda yakin perlu menyimpan modul Enterprise di direktori vendor?
Valery Statichnyi
Maaf, saya tidak mengerti apa yang Anda maksud karena saya mengunduh paket Magento 2 Enterprise dan semua modul disimpan di direktori vendor tidak peduli itu modul inti atau modul Perusahaan. Bahkan kerangka kerja Magento disimpan dalam direktori vendor. Tidak ada direktori aplikasi / kode yang ada dalam paket asli.
Jason Yip
Mungkinkah saya bertanya apa item "psr-4" di composer.json Anda lakukan? Kami menggunakan kemasan tetapi kami memiliki GitLab kami sendiri sehingga kami juga harus memberi kode pada vendor, namun kode saya tidak dikenali. Saya dapat instantiate kelas saya dari modul inti Magento tetapi Cron tidak bekerja. Saya pikir itu ada hubungannya dengan autoloading, file saya tidak sedang dibaca. Saya memiliki kelas Company\Reviews\Cron\Checkdalam file /vendor/company/Reviews/Cron/Check.phpdan saya memiliki cronjob seperti Company\Reviews\Cron\Checktetapi dalam database cron_scheduleitu hanya mengatakan "Kelas Perusahaan \ Ulasan \ Cron \ Periksa tidak ada"
Jacques

Jawaban:

11

Modul khusus tidak boleh dikembangkan dalam vendordirektori. Salin konten dari vendor/magento/magento2-baseke root proyek, buat kustom .gitignoreseperti yang dijelaskan di sini dan inisialisasi repositori git baru. Kemudian kembangkan modul khusus di bawah app/code/VendorName/ModuleName.

Kemudian, ketika Anda memutuskan untuk mendistribusikan modul, modul harus dikemas dan dipublikasikan . Ketika seseorang akan membeli / memasang modul Anda, itu akan secara otomatis diinstal oleh komposer ke vendordirektori proyek mereka.

Alex Paliarush
sumber