# Eigener Controller für Startseite

**URL:** <https://forum.shopware.com/t/eigener-controller-fur-startseite/10877>\
**Category:** Shopware 3.5\
**Tags:** programming\
**Created:** [10. Januar 2013 um 11:43 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877 "2013-01-10T11:43:16Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ecomai](https://avatars.discourse-cdn.com/v4/letter/e/8e8cbc/32.png) [@ecomai](https://forum.shopware.com/u/ecomai)\
**Post date:** [10. Januar 2013 um 11:43 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877/1 "2013-01-10T11:43:16Z")

</div>

Es wurde ein eigener Controller erstellt. Der soll nun aber nicht über [www.domain.de/controller](http://www.domain.de/controller) anzusprechen sein, sondern die Startseite zur Verfügung stellen. Er soll also den indexController überschreiben und den Inhalt von [www.domain.de](http://www.domain.de) ausliefern. Ich steh gerade auf dem Schlauch, aber das müsste doch gehen…

---

<div class="post-metadata">

**Author:** ![ecomai](https://avatars.discourse-cdn.com/v4/letter/e/8e8cbc/32.png) [@ecomai](https://forum.shopware.com/u/ecomai)\
**Post date:** [10. Januar 2013 um 15:32 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877/2 "2013-01-10T15:32:37Z")

</div>

Alternativ habe ich versucht per Mod\_rewrite alles was an [domain.de](http://domain.de) geht auf [domain.de/controller](http://domain.de/controller) umzuschreiben (keine Weiterleitung!). Jedoch greift meine rule nicht, es wird weiterhin die Startseite angezeigt. Jemand eine Idee? ` RewriteRule ^$ /controller/ RewriteCond %{REQUEST\_URI} !(\/(engine|files|templates)\/) RewriteCond %{REQUEST\_URI} !(\/media\/(archive|banner|image|music|extjs|pdf|unknown|video)\/) RewriteCond %{REQUEST\_FILENAME} !-f RewriteCond %{REQUEST\_FILENAME} !-d RewriteRule ^(.\*)$ shopware.php [PT,L,QSA] `

---

<div class="post-metadata">

**Author:** ![ecomai](https://avatars.discourse-cdn.com/v4/letter/e/8e8cbc/32.png) [@ecomai](https://forum.shopware.com/u/ecomai)\
**Post date:** [17. Januar 2013 um 13:31 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877/3 "2013-01-17T13:31:32Z")

</div>

Über eine Einkaufswelt könnte man vielleicht auch eigene Logik auf die Startseite bekommen? Das ist aber leider nicht wirklich dokumentiert. Wie kann man denn sonst eigene Logik für die Startseite umsetzen?

---

<div class="post-metadata">

**Author:** ![bui\_ak](https://avatars.discourse-cdn.com/v4/letter/b/c37758/32.png) [@bui\_ak](https://forum.shopware.com/u/bui_ak)\
**Post date:** [17. Januar 2013 um 15:56 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877/4 "2013-01-17T15:56:02Z")

</div>

ungetestet: klink dich doch ins event Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Index oder Enlight\_Controller\_Action\_Frontend\_Index\_Index ein, und mach dort einen $this-\>redirect (array (‚controller‘ =\> ‚meinController‘));

---

<div class="post-metadata">

**Author:** ![ecomai](https://avatars.discourse-cdn.com/v4/letter/e/8e8cbc/32.png) [@ecomai](https://forum.shopware.com/u/ecomai)\
**Post date:** [23. Januar 2013 um 12:58 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877/5 "2013-01-23T12:58:42Z")

</div>

Danke für den Tipp. Ein redirect leitet aber so weiter, dass sich die URL ändert. Das will ich aber gerade nicht. Das brachte mich dann aber dazu es mit einem forward zu versuchen. Der läuft aber ins Leere. Der Browser rödelt sich tot, am Ende gibts einen 500er-Fehler, firebug sagt dazu nichts. Ich vermute eine Endlosschleife oder dass ich forward falsch einsetze? Ein forward auf einen Standard-Controller (z.B. register) zeigt nämlich das gleiche Verhalten. ` $this-\>subscribeEvent( 'Enlight\_Controller\_Action\_PreDispatch\_Frontend\_Index', 'onIndex' ); ` ` public function onIndex(Enlight\_Event\_EventArgs $args) { return $args-\>getSubject()-\>forward('meinController'); } `

---

<div class="post-metadata">

**Author:** ![bui\_ak](https://avatars.discourse-cdn.com/v4/letter/b/c37758/32.png) [@bui\_ak](https://forum.shopware.com/u/bui_ak)\
**Post date:** [23. Januar 2013 um 23:43 UTC](https://forum.shopware.com/t/eigener-controller-fur-startseite/10877/6 "2013-01-23T23:43:28Z")

</div>

ebenfalls ungetestet: das event müsste Enlight\_Controller\_Action\_Frontend\_Index\_Index sein. dann ` public function onIndex(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>forward('meinController'); // forward() selbst macht kein return // also wird null geliefert // desshalb wird in engine/Library/Enlight/Controller/Action.php::dispatch() // trotzdem $this-\>$action() ausgeführt. das kann zu einer endlosschleife führen... // also: return true; } ` funktioniert aber auch nicht, das preDispatch() von Shopware\_Controllers\_Frontend\_Index spuckt einem kräftig in die suppe. so gehts (getestet) ohne eigenen controller - umleitung auf warenkorb: ` $this-\>subscribeEvent( // k.a. ob der noch benötigt wird... // aber spart ein bissl performance weil die indexAction nicht mehr ausgeführt wird ... 'Enlight\_Controller\_Action\_Frontend\_Index\_Index', 'onIndex' ); $this-\>subscribeEvent( 'Shopware\_Controllers\_Frontend\_Index::preDispatch::replace', 'onpreDispatch' ); public function onpreDispatch(Enlight\_Event\_EventArgs $args) { $args-\>getSubject()-\>forward('cart', 'checkout'); } public function onIndex(Enlight\_Event\_EventArgs $args) { return true; } `
