@Argee schrieb:
Push, weil ich genau das gleiche Problem habe
Habe drüber nachgedacht, ob man über die install-Methode des plugins nicht über phps „shell_exec“ composer ausführen könnte. Könnte das funktionieren?
Habe ich probiert, geht wenn man die Plugin-Installation über die cli ausführt, also mit sw:plugin:install PluginName. Dafür reicht ein einfaches
exec(sprintf(‚composer require %s %s‘, $dependencyName, $dependencyVersion)); in der install Funktion der Plugin Bootstrap.
Über den Plugin-Manager im Backend, funktioniert es leider nicht , selbst wenn man die php binary mit der cli php.ini verwendet, wie folgt
exec(sprintf(‚/usr/bin/php -c /etc/php/7.0/cli/php.ini composer.phar require %s %s --no-interaction --optimize-autoload‘, $dependencyName, $dependencyVersion));
Man sollte dabei bedenken, dass man sich bei Ausführung der Installation über den Plugin-Manager im Shopware-Hauptverzeichnis befindet. D.h. möchte man die vendor files in seinem Plugin Verzeichnis liegen haben, wie bei der von @hsoebbing beschrieben Lösung, muss man beim exec vorher noch ein „cd custom/plugins/PluginName &&“ einfügen (bzw. das pre 5.2 Plugin Verzeichnis).
Also exec(sprintf(‚cd custom/plugins/PluginName && composer require %s %s‘, $dependencyName, $dependencyVersion));
Vorteil: Die eigenen dependencies laufen getrennt von den von Shopware und werden bei einem Shopware Update nicht aus der composer.json entfernt
Nachteil: Es lädt auch die dependencies erneut herunter die eigentlich schon von Shopware geladen wurden => Overhead
Falls jemand die Lösung dafür kennt wie man das composer require erfolgreich während der Plugin Installation über den Plugin-Manager im Backend laufen lassen kann, wäre ich sehr erfreut diese zu lesen.