Magento 2: Tập tin tổng hợp tối thiểu


9

Tôi đã thấy một vài điều trôi nổi trên internet vô thường (ví dụ Twitter) rằng một số thay đổi gần đây của Magento 2 cho phép cài đặt một mô-đun vào thư mục nhà cung cấp thông qua trình soạn thảo và Magento 2 sẽ thấy mô-đun của bạn mà không cần bất kỳ tính năng tomfool nào. .

Nếu điều này là đúng, liệu có một composer.jsontệp " tối thiểu " nào nổi cho các nhà phát triển mô-đun sử dụng với các mô-đun của họ để cho phép người dùng Magento 2 cài đặt chúng vào hệ thống của họ không?


Bạn có thể muốn xem github.com/magento/magento2/pull/1206 . Nó cho phép các mô-đun magento sống trong nhà cung cấp mà tôi tin.
Luke Rodgers

Câu trả lời:


6

Cập nhật

Có vẻ như một số điều đã thay đổi với một số thay đổi mới nhất (ngày 7 tháng 10) trong nhánh phát triển. Bây giờ có vẻ như có thể hỗ trợ một mô-đun sống trong thư mục nhà cung cấp.

Tôi đã tạo ra hai ví dụ về cài đặt các mô-đun. Một bản sao các tệp vào ứng dụng / mã và một tệp khác đăng ký mô-đun nơi nó nằm trong thư mục nhà cung cấp.

Chiến lược sao chép: https://github.com/mttjohnson/magento2-sample-module-minimal-copy Chiến lược đăng ký: https://github.com/mttjohnson/magento2-sample-module-minimal-register

Đối với mục đích phát triển, tôi nghĩ rằng việc sử dụng chiến lược đăng ký sẽ hữu ích hơn vì các tệp đang được Magento chạy có thể được sửa đổi trực tiếp, kiểm tra và sau đó được cam kết trở lại mô-đun repo.

Câu trả lời gốc

Nếu bạn có một composer.jsontệp cho gói trình soạn thảo mô-đun có chứa một loại magento2-modulethì các tệp mặc định sẽ được sao chép sang một thư mục được ánh xạ đã chỉ định trong app/codethư mục.

{
    "name": "vendorname/module-name",
    "type": "magento2-module",
    "require": {
        "magento/magento-composer-installer": "*"
    },
    "extra": {
        "map": [
            [
                "module",
                "VendorName/ModuleName"
            ]
        ]
    }
}

Trong ví dụ này composer.json, tên gói của nhà soạn nhạc vendorname/module-namesẽ dẫn đến các tệp cho gói soạn thảo được đặt vào vendor/vendorname/module-name.

Loại đặc biệt magento2-moduleđược triển khai như một trình soạn thảo-plugin trong gói trình cài đặt magento / magento-trình soạn thảo . Đó là lý do tại sao tôi đã liệt kê nó trong phần yêu cầu. Chính trình soạn thảo-plugin này thực hiện sao chép các tập tin vào app/codethư mục magento thích hợp .

Phần extra: {map: [["composerDir","MagentoDir"]]}này được trình cài đặt trình soạn thảo-plugin tham chiếu để biết phần nào trong gói trình soạn thảo của bạn để ánh xạ tới phần nào trong cấu trúc thư mục magento của bạn. Trong ví dụ được cung cấp, điều này sẽ lấy vendor/vendorname/module-name/modulevà sao chép các tệp từ đó sang app/code/VendorName/ModuleName.


phần bản đồ ở đây phải không? Theo hiểu biết của tôi, yêu cầu kéo này đã được thực hiện nên bạn không cần plugin để sử dụng trình soạn thảo với các mô-đun Magento - Magento sẽ tự tìm nhà cung cấp. github.com/magento/magento2/pull/1206
Alan Storm

Đọc qua một số ý kiến ​​ở cuối PR mà bạn đề cập, có vẻ như PR đã được hợp nhất nhưng nó không hỗ trợ đầy đủ các mô-đun sống trong thư mục nhà cung cấp của nhà soạn nhạc.
mttjohnson

1

Có vẻ như một cái gì đó như thế này nên thực hiện các mẹo.

{
    "name": "pulsestorm/module-name",
    "description": "A description of your extension",
    "authors": [
        {
            "name": "Robert Hoffner",
            "email": "rhoffner@example.com"
        }
    ],
    "require": {},
    "autoload": {
        "psr-4": {
            "Package\\Module\\": "src/path/to/Package/Module/Package/Module",
        },        
        "files": [
            "src/path/to/Package/Module/registration.php",
        ]
    }    
}

Chìa khóa ở đây là phần trình tải tự động. Nó thiết lập trình tải tự động PSR-4 trỏ vào các tệp lớp của bạn tự động tải của bạn registration.php. Khi nhà soạn nhạc bỏ các tệp trong nhà cung cấp và tạo lại các tệp tự động tải, Magento sẽ có thể thấy mô-đun của bạn.

Một tác dụng phụ gọn gàng của việc này - mã không còn cần phải ở trong app/code!


Tôi bối rối vì điều này. Tất cả mọi thứ tôi đọc về việc tạo mô-đun của riêng tôi đều cho tôi đặt các tệp của mình vào ứng dụng / mã. 1) Làm thế nào để nó hoạt động và 2) Tại sao điều này gọn gàng?
kevando
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.