Shopware: registerCustomModels für Doctrine Entities von fremden Plugins

Sa, 22.11.2014 - 12:25 -- Daniel Espendiller

Da Shopware auf Doctrine setzt kann man eigene Entities auch über ein Plugins einbinden Shopware / Doctrine Plugin - Neues Model erstellen. Diese werden zum Beispiel unter MyPlugin/Models/FooClass.php angelegt. In der Plugin Bootstrap muss das Verzeichnis Models dann manuell registriert werden.

Ein Aufruf der registerCustomModels innerhalb von afterInit reicht dazu. Wenn man jedoch auch Entities von externe Plugin / Premium Plugins z.B. als Fremdbeziehung einbinden will, so kann man nicht davon ausgehen, dass das Plugin bereits initialisiert wurde. Will man dieses sicherstellen, so hilft es unten aufgeführtes Code-Snippet. Es ruft einfach die fremde registerCustomModels aus dem Plugin auf.

class Shopware_Plugins_Frontend_MyPlugin_Bootstrap extends Shopware_Components_Plugin_Bootstrap
{
 
    public function afterInit()
    {
        $this->registerCustomModels();
 
        try {
            $plugin = Shopware()->Container()->get('shopware.plugin_manager')->getPluginBootstrap(
                Shopware()->Container()->get('shopware.plugin_manager')->getPluginByName('ForeignPlugin')
            );
            $plugin->registerCustomModels();
        } catch (\Exception $e) {
        }
 
    }
}