Cara menggunakan ComponentRegistrar :: PERPUSTAKAAN di Magento 2

15

Kami memiliki 4 jenis komponen di Magento 2, karena saya telah menggunakan tiga di antaranya, tetapi pertanyaan saya adalah bagaimana cara menggunakan const LIBRARY = 'library';komponen.

Seperti namanya, ini adalah sesuatu untuk menyertakan perpustakaan pihak ketiga, tetapi siapa pun dapat memberi saya contoh tentang cara memasukkan perpustakaan dan menggunakan lib di tingkat aplikasi global.

/**#@+
* Different types of components
*/
const MODULE = 'module';
const LIBRARY = 'library';
const THEME = 'theme';
const LANGUAGE = 'language';

Saya tidak menemukan informasi apa pun const LIBRARY = 'library';di dokumentasi resmi Magento 2. Daftarkan komponen Anda .

Krishna ijjada
sumber

Jawaban:

2

Saya tidak yakin mengapa itu tidak didokumentasikan pada dokumentasi resmi tetapi berikut ini cara melakukannya dari apa yang saya mengerti:

Jadi sangat mirip dengan cara modul register Anda, Anda hanya perlu membuat lib/internal/Your/Library/registration.phpdengan konten berikut:

<?php

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LIBRARY,
    'your/library',
    __DIR__
);

Anda juga dapat menemukan lokasi yang tepat didokumentasikan dengan baik di sini: http://devdocs.magento.com/guides/v2.0/architecture/archi_perspectives/components/modules/mod_conventions.html

Untuk menggunakan / memuat perpustakaan ini Anda mengikuti cara yang sama seperti yang dilakukan dengan Magento\Frameworkperpustakaan. Jadi menggunakan:

use Your\Library\Custom\Class;

Anda dapat menemukan inti di registration.phpbawah lib/internal/Magento/Frameworkfolder

Raphael di Digital Pianism
sumber
Terima kasih @Raphael, Tolong beri saya contoh tentang cara menggunakan / memuat pustaka ini menambahkan "PERPUSTAKAAN = 'pustaka" dalam implementasi pihak ketiga / kustom.
Krishna ijjada
Saya menantikan untuk memiliki contoh dasar tentang cara menggunakan ini secara real time.
Krishna ijjada
@ Krishati95Dev lihat jawaban saya yang diperbarui
Raphael di Digital Pianism
1

Anda dapat merujuk dari file inti di mana itu digunakan. Berikut adalah contoh ini dapat membantu Anda, Anda perlu memberi nama yang ingin Anda sertakan: -

ComponentRegistrar :: register (ComponentRegistrar :: PERPUSTAKAAN, '', DIR );

Contoh:

\Magento\Framework\Component\ComponentRegistrar::register(
    \Magento\Framework\Component\ComponentRegistrar::LIBRARY,
    'magento/test',
    __DIR__ );
Shashank Gupta
sumber
0

Saya bisa mendapatkan jawabannya /magento//a/163418/36759 untuk bekerja, tetapi hanya setelah mendeklarasikan ruang nama di dalam kelas di perpustakaan, jadi ingatlah itu.

bh-
sumber
0

Dari Magento 2.2, pendekatan perpustakaan yang setengah terdokumentasi tidak lagi berfungsi. Magento mendorong pengembang untuk menambahkan perpustakaan menggunakan komposer sesuai dengan:

https://github.com/magento/magento2/issues/10985

Apa yang berhasil menambahkan autoloader Anda sendiri: lib/internal/Your/Library/registration.php

<?php
namespace Your\Library;

spl_autoload_register(function ($class) {
  $prefix   = __NAMESPACE__ . '\\';
  $base_dir = __DIR__.'/';
  $len = strlen($prefix);

  if (strncmp($prefix, $class, $len) !== 0) {
    return;
  }
  $relative_class = substr($class, $len);
  $file = $base_dir . str_replace('\\', '/', $relative_class) . '.php';
  if (file_exists($file)) {
    require $file;
  }
});

Ini berfungsi karena app/etc/NonComposerComponentRegistration.phpmasih termasuk direktori berikut:

$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/registration.php';
$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/*/registration.php';
Dominik di NETZKOLLEKTIV
sumber