# Controller Vererben

**URL:** <https://forum.shopware.com/t/controller-vererben/14165>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [3. Juli 2013 um 13:40 UTC](https://forum.shopware.com/t/controller-vererben/14165 "2013-07-03T13:40:04Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![jointer](https://avatars.discourse-cdn.com/v4/letter/j/f08c70/32.png) [@jointer](https://forum.shopware.com/u/jointer)\
**Post date:** [3. Juli 2013 um 13:40 UTC](https://forum.shopware.com/t/controller-vererben/14165/1 "2013-07-03T13:40:04Z")

</div>

Wie kann ich einen Controller in meinem Plug-in vererben, um seine Methode überschreiben zu können (damit die URL immer dieselbe bleibt)?

---

<div class="post-metadata">

**Author:** ![Parker](https://avatars.discourse-cdn.com/v4/letter/p/c6cbf5/32.png) [@Parker](https://forum.shopware.com/u/Parker)\
**Post date:** [10. Juli 2013 um 14:49 UTC](https://forum.shopware.com/t/controller-vererben/14165/2 "2013-07-10T14:49:19Z")

</div>

Willst das Controller Verhalten bis Action Ebene überschreiben ? Ich habe dies nicht probiert, aber vielleicht kann man ein Plugin ( FE ) anlegen und subscribeEvent() wie folgendes gestalten Analog zum Beispiel $this-\>subscribeEvent( ‚CONTROLLER\_CLASS\_NAME::ACTION\_METHODE\_NAME::replace‘, // oder before, after … DEINE\_EIGENE\_ACTION\_METHODE )

---

<div class="post-metadata">

**Author:** ![jointer](https://avatars.discourse-cdn.com/v4/letter/j/f08c70/32.png) [@jointer](https://forum.shopware.com/u/jointer)\
**Post date:** [23. Juli 2013 um 12:38 UTC](https://forum.shopware.com/t/controller-vererben/14165/3 "2013-07-23T12:38:51Z")

</div>

Vielen Dank, Parker, für deine Antworten, leider „subscribe event“ als „hook“ ist in diesem Fall nicht geeignet, z.B wenn ich 50 Methoden einer Klasse ersetzt brauche, soll ich 50 subscribe events schreiben. Es sollte möglich sein, die Klasse zu vererben. Kann mir jemand helfen?

---

<div class="post-metadata">

**Author:** ![keksterrrrr](https://avatars.discourse-cdn.com/v4/letter/k/45deac/32.png) [@keksterrrrr](https://forum.shopware.com/u/keksterrrrr)\
**Post date:** [23. Juli 2013 um 16:29 UTC](https://forum.shopware.com/t/controller-vererben/14165/4 "2013-07-23T16:29:55Z")

</div>

Dann müsstest du jede Anfrage an deinen eigenen Controller umleiten. Oder wie meinst du das?! Gruß

---

<div class="post-metadata">

**Author:** ![Parker](https://avatars.discourse-cdn.com/v4/letter/p/c6cbf5/32.png) [@Parker](https://forum.shopware.com/u/Parker)\
**Post date:** [24. Juli 2013 um 18:20 UTC](https://forum.shopware.com/t/controller-vererben/14165/5 "2013-07-24T18:20:20Z")

</div>

Dann kannst du eigene Frontend Controller registrieren eine Beispiel Umsetzung ist in Plugin SwagVariantsTab zu finden. ` ..... // Register frontend controller $this-\>subscribeEvent( 'Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_SwagVariantsTab', 'onGetFrontendController' ); ..... public function onGetFrontendController(Enlight\_Event\_EventArgs $arguments) { $this-\>Application()-\>Template()-\>addTemplateDir( $this-\>Path() . 'Views/' ); return $this-\>Path() . 'Controllers/Frontend/SwagVariantsTab.php'; } `

---

<div class="post-metadata">

**Author:** ![jointer](https://avatars.discourse-cdn.com/v4/letter/j/f08c70/32.png) [@jointer](https://forum.shopware.com/u/jointer)\
**Post date:** [26. Juli 2013 um 10:37 UTC](https://forum.shopware.com/t/controller-vererben/14165/6 "2013-07-26T10:37:51Z")

</div>

Hallo, Ok, ich werde den neuen Frontend-Kontroller z.B. als SwagAccount registrieren, aber wie kann ich Shopware\_Controllers\_Frontend\_Account vererben und alle seine Methoden überschreiben? Und wenn ich [http://shopware.localhost/account](http://shopware.localhost/account) besuche, möchte ich jede Methode, die ich geschrieben habe, von der SwagAccount-Klasse gelesen haben. `class Shopware\_Controllers\_Frontend\_SwagAccount extends Shopware\_Controllers\_Frontend\_Account { public function indexAction() { var\_dump('indexAction'); parent::indexAction(); } }` Ich möchte var\_dump unter [http://shopware.localhost/account](http://shopware.localhost/account) sehen können. Ich weiss nicht, wie ich das klarrer auslegen kann 🙂

---

<div class="post-metadata">

**Author:** ![Oliver\_Skroblin](https://avatars.discourse-cdn.com/v4/letter/o/6bbea6/32.png) [@Oliver\_Skroblin](https://forum.shopware.com/u/Oliver_Skroblin)\
**Post date:** [26. Juli 2013 um 12:18 UTC](https://forum.shopware.com/t/controller-vererben/14165/7 "2013-07-26T12:18:04Z")

</div>

Hi, einen Controller einfach zu ersetzen funktioniert in Shopware nicht. Du kannst jedoch einzelne Actions auf einem Controller abfangen. Hier gibt es dann einen Trick den du anwenden könntest um den Account Controller durch deinen Plugin Controller zu ersetzen. Dafür registrierst du dich auf dem PreDispatch Event des Account Controllers um fängst einfach die Request ab und leitest diese dann weiter an deinen Controller. `$args-\>getSubject()-\>forward($$args-\>getSubject()-\>Request()-\>getActionName(), 'MeinController')` Dadurch werden einfach alle Anfragen an den Account Controller an deinen weiter geleitet. Deinen eigenen Controller kannst du dann ganz einfach vom Account Controller über „extends“ ableiten. Hoffe das hilft dir weiter.
