# Eigene Component-Klasse verwenden

**URL:** <https://forum.shopware.com/t/eigene-component-klasse-verwenden/23626>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [17. November 2014 um 10:35 UTC](https://forum.shopware.com/t/eigene-component-klasse-verwenden/23626 "2014-11-17T10:35:59Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![dev4you](https://avatars.discourse-cdn.com/v4/letter/d/c37758/32.png) [@dev4you](https://forum.shopware.com/u/dev4you)\
**Post date:** [17. November 2014 um 10:35 UTC](https://forum.shopware.com/t/eigene-component-klasse-verwenden/23626/1 "2014-11-17T10:35:59Z")

</div>

Hallo, wir versuchen gerade eine eigene Component Klasse in unserem Plugin zu verwenden. In unserem Backend-Controller (PHP) wollen wir eine Klassenfunktion aufrufen. Jedoch bekommen wir folgende Fehlermeldung zurück: ` Fatal error: Class 'Shopware\_Components\_MyDocument' not found in .../engine/Shopware/Plugins/Local/Backend/UnserPlugin/Controllers/Backend/MyDocument.php 503 Service Unavailable ` Kann uns jemand dazu einen Tipp geben? Verzeichnisstruktur: UnserPlugin\Components\MyDocument.php UnserPlugin\Controllers\Backend\MyDocument.php UnserPlugin\Bootstrap.php Listings: ` // UnserPlugin\Controller\MyDocument.php class Shopware\_Controllers\_Backend\_MyDocument extends Shopware\_Controllers\_Backend\_ExtJs { public function createDocumentAction() { // ... $this-\>createDocument(); // ... } private function createDocument() { // ... $myDocument = Shopware\_Components\_MyDocument::initDocument(/\* ... \*/); // ... } } ` ` // UnserPlugin\Components\MyDocument.php class Shopware\_Components\_MyDocument extends Enlight\_Class implements Enlight\_Hook { public static function initDocument(/\* ... \*/) { return Enlight\_Class::Instance('Shopware\_Components\_MyDocument'); } } ` ` // UnserPlugin\Bootstrap.php private function registerComponents() { $this-\>subscribeEvent( 'Enlight\_Bootstrap\_InitResource\_MyDocument', 'onInitMyDocument' ); } // ... public function onInitMyDocument(Enlight\_Event\_EventArgs $args) { $this-\>Application()-\>Loader()-\>registerNamespace( 'MyComponents', $this-\>Path() . 'Components/' ); $myDocument = new Shopware\_Components\_MyDocument(); return $myDocument; } `

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [17. November 2014 um 10:56 UTC](https://forum.shopware.com/t/eigene-component-klasse-verwenden/23626/2 "2014-11-17T10:56:33Z")

</div>

Warum versuchst du über ein Singleton eine Instanz zu erzeugen?! Deine Komponente wird nur über dein Event geladen, wenn du folgendermaßen drauf zugreifst: Shopware()-\>MyDocument()-\>machIrgendwas(); Übrigens: der Name deiner Methode stimmt nicht mit dem Namen im subscribe überein. Viele Grüße

---

<div class="post-metadata">

**Author:** ![dev4you](https://avatars.discourse-cdn.com/v4/letter/d/c37758/32.png) [@dev4you](https://forum.shopware.com/u/dev4you)\
**Post date:** [17. November 2014 um 11:21 UTC](https://forum.shopware.com/t/eigene-component-klasse-verwenden/23626/3 "2014-11-17T11:21:04Z")

</div>

Vielen Dank für die schnelle Antwort. Ich verstehe das System dahinter noch nicht so ganz. Also wie Shopware dann über `Showware()-\>MyDocument()-\>...()` zugreift. (Wird mir auch von PhpStorm nicht automatisch vervollständigt.) Jetzt bekomme ich die Fehlermeldung: ` Fatal error: Class 'Shopware\_Components\_MyDocument' not found in .../engine/Shopware/Plugins/Local/Backend/UnserPlugin/Bootstrap.php 503 Service Unavailable ` Allgemein: Wie kann ich zu einem Plugin eine Component-Klasse hinzufügen bzw. diese registrieren lassen und dann z.B. in einem Backend-Controller verwenden? Das ist mir bis jetzt schleierhaft…

---

<div class="post-metadata">

**Author:** ![EikeBrandtWarneke](https://avatars.discourse-cdn.com/v4/letter/e/cdc98d/32.png) [@EikeBrandtWarneke](https://forum.shopware.com/u/EikeBrandtWarneke)\
**Post date:** [17. November 2014 um 11:38 UTC](https://forum.shopware.com/t/eigene-component-klasse-verwenden/23626/4 "2014-11-17T11:38:48Z")

</div>

Hier ein vollständiges Beispiel bei dem auch der Umgang mit eigenen Komponenten erläutert wird: [http://wiki.shopware.com/Plugin-Entwick … #Bootstrap](http://wiki.shopware.com/Plugin-Entwicklung-Boilerplate-Code%5C_detail%5C_1077.html#Bootstrap) Gesendet von meinem iPhone mit Tapatalk
