ComponentRegistrar :: LIBRARY nasıl kullanılır? Magento 2


15

Magento 2'de üç tip kullandığım için 4 çeşit bileşene sahibiz, ancak sorum şu const LIBRARY = 'library';bileşenin nasıl kullanılacağı .

Adından da anlaşılacağı gibi, bu üçüncü taraf kitaplıklarını içerecek bir şeydir, ancak herhangi biri bana kitaplığı nasıl ekleyeceğime ve lib'i küresel uygulama düzeyinde nasıl kullanacağına dair bir örnek verebilir.

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

const LIBRARY = 'library';Resmi Magento 2 belgelerinde herhangi bir bilgi bulamadım Bileşeninizi kaydedin .

Yanıtlar:


2

Neden resmi belgelerde belgelenmediğinden emin değilim ama anladığım kadarıyla nasıl yapılması gerektiği:

Bu nedenle, kayıt modüllerinize çok benzer, sadece lib/internal/Your/Library/registration.phpaşağıdaki içerikle oluşturmanız gerekir :

<?php

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

Ayrıca doğru konumun burada doğru bir şekilde belgelendiğini de bulabilirsiniz: http://devdocs.magento.com/guides/v2.0/architecture/archi_perspectives/components/modules/mod_conventions.html

Bu kütüphaneleri kullanmak / yüklemek için kütüphane ile aynı şekilde takip edersiniz Magento\Framework. Yani kullanarak:

use Your\Library\Custom\Class;

Çekirdeği klasör registration.phpaltında bulabilirsinizlib/internal/Magento/Framework


Teşekkürler @Raphael, Lütfen bana bu kitaplıkların nasıl kullanılacağı / yükleneceği konusunda bir örnek verebiliriz. Üçüncü taraf / özel uygulamalarda "LIBRARY = 'library" eklendi.
Krishna ijjada

Bunu gerçek zamanlı olarak nasıl kullanacağınıza dair temel bir örnek bekliyorum.
Krishna ijjada

Güncellenmiş cevabımı gör
Raphael at Digital

1

Çekirdek dosyanın kullanıldığı yerden başvurabilirsiniz. İşte size yardımcı olabilecek bir örnek, Dahil etmek istediğiniz adı vermeniz gerekir:

ComponentRegistrar :: register (ComponentRegistrar :: KÜTÜPHANE '', DIR );

Misal :

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


0

Magento 2.2'den itibaren tarif edilen yarı belgelenmiş kütüphane yaklaşımı artık işe yaramıyor. Magento, geliştiricileri aşağıdakilere göre besteci kullanarak kütüphane eklemeye teşvik eder:

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

Kendi otomatik yükleyicinizi eklemek ne işe yarar? 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;
  }
});

Bu app/etc/NonComposerComponentRegistration.php, hala aşağıdaki dizinleri içerdiği için çalışır :

$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/registration.php';
$pathList[] = dirname(dirname(__DIR__)) . '/lib/internal/*/*/*/registration.php';
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.