Magento 2: โมดูลของบุคคลที่สามไปที่ไหน?


22

ฉันเพิ่งติดตั้ง Magento 2 รุ่นแรกอย่างเป็นทางการฉันรู้สึกประหลาดใจที่พบว่าapp/codeโฟลเดอร์หายไป

app/code

นี่เป็นทั้งรุ่นที่ดาวน์โหลดจากเว็บไซต์และรุ่นที่ติดตั้งผ่านผู้แต่ง นอกจากนี้เมื่อฉันพยายามสร้างapp/codeโฟลเดอร์ด้วยตนเองจากนั้นทำ a php bin/magento module:enable Pulsestorm_MyModuleเพื่อเปิดใช้งานโมดูลตัวอย่างฉันได้รับข้อผิดพลาดดังต่อไปนี้

 Unknown module(s): 'Pulsestorm_MyModule'

โมดูลของบุคคลที่สามควรอยู่ที่ไหน หากคำตอบคือ "แหล่งเก็บข้อมูลต้นฉบับและติดตั้งผ่านผู้แต่ง" ผู้พัฒนาโมดูลจำเป็นต้องจัดโครงสร้างโมดูลของตนอย่างไรให้อยู่ในพื้นที่เก็บข้อมูล Magento 2

คำตอบ:


18

โดยเฉพาะอย่างยิ่ง 3PLs จะอยู่ในไดเรกทอรีผู้ขายพร้อมกับทุกอย่างอื่น อย่างไรก็ตาม… :) เราทุกคนรู้ว่ามีรหัสที่กำหนดเองที่เขียนขึ้นสำหรับเกือบทุกไซต์ที่สร้างเองและ IMO นี้อยู่ในแอพ / รหัส / ยัง ใช่คุณยังสามารถเรียกใช้โมดูลได้จากแอพ / รหัส

โมดูลทั้งหมดโดยไม่คำนึงถึงสถานที่ควรมีcomposer.jsonและregistration.phpไฟล์ที่ใช้ในการรับโมดูลเข้าสู่ระบบ คุณต้องการetc/modules.xmlไฟล์ด้วย นี่คือเทคนิคในการลงทะเบียนโมดูล:

$ tree app/code/Alger/
app/code/Alger/
└── Skeleton
    ├── composer.json
    ├── etc
       └── module.xml
    └── registration.php

2 directories, 3 files

ในการทำให้โมดูลทำงานและใช้งานได้คุณจะต้องเรียกใช้setup:upgradeและจากนั้นcache:flushระบบจะรับรู้และโหลดส่วนประกอบใหม่ของคุณ:

$ bin/magento module:enable Foo_Bar
$ bin/magento setup:upgrade -q && bin/magento cache:flush -q

อัปเดต:สองวิธีในการติดตั้งโมดูลจาก repo สาธารณะ GitHub: https://gist.github.com/davidalger/77761f13d9752b117f35


ฉันไม่ต้องการโมดูล: เปิดใช้งานเว้นแต่ฉันจะปิดการใช้งานก่อนหน้านี้ มีพารามิเตอร์ที่คุณสามารถตั้งค่าให้ติดตั้งส่วนขยายที่ปิดใช้งานหรือไม่
Eirik

@Eirik หากคุณกำลังติดตั้งจาก repo ผ่านผู้เรียบเรียงก็ทำโดยผู้แต่ง หากคุณวางไฟล์เหล่านี้ไว้ตรงนั้นนั่นคือเมื่อคุณต้องการเปิดใช้งาน อย่างน้อยฉันก็ค่อนข้างแน่ใจว่านั่นคือสิ่งที่ฉันพบหลังจาก GA ขณะที่ฉันกำลังขัดเกลาสไลด์เพื่อพูดที่นี่ที่ #phpworld :)
davidalger

ขอบคุณมากยังไม่ได้ผลักไปซื้อคืนเนื่องจากฉันทำงานในพื้นที่ ข้อมูลที่ดี
Eirik

6

app/codeอลันพวกเขายังคงไปใน ตรวจสอบให้แน่ใจว่าคุณมีregistration.phpในโฟลเดอร์ modulename ที่มีสิ่งต่อไปนี้:

<?php
\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::MODULE,
    'Namespace_Modulename',
    __DIR__
);

จากนั้นเรียกใช้:

php bin/magento setup:upgrade

เพิ่งทดสอบกับ Magento 2 CE รุ่นใหม่และทำงานอย่างถูกต้อง


ขอบคุณ @Eirik นั่นมันแน่นอน ไม่ชัดเจนหากการลงทะเบียน php เป็นสิ่งที่ลื่นไหลในที่ไม่ควรมีหรือสิ่งที่จะทำให้การเปิดตัวครั้งสุดท้าย ค่อนข้างชัดเจนแล้วตอนนี้ :)
Alan Storm
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.