it-swarm.com.de

So fügen Sie ein composer - Paket hinzu, ohne die Kerndatei composer.json zu ändern

Ich versuche, ein Composer Package hinzuzufügen und es global verfügbar zu machen, aber ich möchte core composer.json aus offensichtlichen Gründen nicht ändern.

Ist dies die einzige Möglichkeit, eine composer.json entweder im Joomla-Stammverzeichnis (oder außerhalb des Joomla-Stammverzeichnisses) zu haben und den Autoloader entweder in der index.php oder define.php einzuschließen? Oder die derzeitige bewährte Methode, die Pakete nach Bedarf in jede der Erweiterungen aufzunehmen?

Das Paket, das ich einschließen möchte, lautet https://github.com/nette/forms und muss global verfügbar sein, damit ich es für Front-End-Formulare verwenden kann.

4
sifu

Ich vermute, dass das Ändern der Joomla-Root-Datei composer.json mit Joomla 4 geliefert wird. In der Zwischenzeit ist es meines Erachtens am besten, die Datei composer=) in ein benutzerdefiniertes System-Plugin aufzunehmen Rufen Sie dann den Autoloader beim Ereignis onAfterRoute auf, der dann global verfügbar ist, oder wenn Sie den Autoloader beispielsweise nur für eine Komponente laden möchten, können Sie den Optionswert aus der Eingabe ziehen und die require-Anweisung einfach in ein if einschließen Öffnen Sie den Joomla-Bibliotheksordner, bevor Sie zusätzliche Pakete hinzufügen, und installieren Sie keine Pakete, mit denen Joomla bereits ausgeliefert wird, da der Autoloader von Joomla und Ihr Autoloader keine unterschiedlichen Versionen von Paketen koordinieren können und Sie möglicherweise alles kaputt machen oder Probleme verursachen.

<?php 
defined('_JEXEC') or die('Restricted access');

class plgSystemYayComposer extends JPlugin
{
    function onAfterRoute()
    {
        require_once(JPATH_ROOT . '/plugins/system/yaycomposer/composer/vendor/autoload.php');
    }
}

Offensichtlich ist diese Technik nicht auf die Entwicklung für die Verteilung von Komponenten usw. anwendbar. Sie sollten wahrscheinlich auch die phar-Datei entfernen, anstatt sie in situ zu belassen, und/oder den gesamten Webzugriff auf das Verzeichnis mit einer htaccess-Datei blockieren, aber Sie wissen, ich bin nicht dein Vater.

4
jamesgarrett