Neuen Controller einbinden

Hallo Shopgemeinde, ich hab da ein kleines Problem und vielleicht könnt Ihr mir da weiterhelfen. Ich möchte gern ein neuen Controller erstellen der im Account einen weiteren Menüpunkt erstellt. Der neue Controller soll vom Account Controller erben und ein Formular einbinden. Der Controller wird auch eingebunden nur der Menüpunkt wird nicht angezeigt. Hier mein Snippet: public function install() { /\* \* Set a new menu link in account \*/ $this-\>subscribeEvent('Enlight\_Controller\_Action\_PostDispatch\_Frontend\_Account','onPostDispatchAccount'); /\* \* New controller for new menu link \*/ $this-\>subscribeEvent('Enlight\_Controller\_Dispatcher\_ControllerPath\_Frontend\_AccountOldPart','onGetControllerPath'); return true; } public static function onGetControllerPath(Enlight\_Event\_EventArgs $args) { return dirname(\_\_FILE\_\_).'/AccountOldPart.php'; } public static function onPostDispatchAccount(Enlight\_Event\_EventArgs $args) { $request = $args-\>getSubject()-\>Request(); $response = $args-\>getSubject()-\>Response(); if(!$request-\>isDispatched() || $response-\>isException() || ($request-\>getModuleName()!='frontend' && $request-\>getModuleName()!="widgets")) { return; } if(!$request-\>isDispatched()||$response-\>isException()) { return; } $view = $args-\>getSubject()-\>View(); $view-\>extendsTemplate(dirname(\_\_FILE\_\_)."/extend.tpl"); } Mach ich da noch was verkehrt? Hat vielleicht jemand einen Tipp für mich? Ich danke euch riesig dafür und wünsch euch schon mal ein schönes Wochenende. MfG Tobias

[quote=“einfachich”]Der neue Controller soll vom Account Controller erben[/quote] Warum?! [quote=“einfachich”]Nur der Menüpunkt wird nicht angezeigt.[/quote] Dann solltest du 1. prüfen, ob dein event listener ausgeführt wird und 2. relevanten code posten :slight_smile: Viele Grüße

[quote=“Aquatuning GmbH”][quote=“einfachich”]Der neue Controller soll vom Account Controller erben[/quote] Warum?! [quote=“einfachich”]Nur der Menüpunkt wird nicht angezeigt.[/quote] Dann solltest du 1. prüfen, ob dein event listener ausgeführt wird und 2. relevanten code posten :slight_smile: Viele Grüße[/quote] Jetzt wird das Event gefeuert und erhalte auch den Link… Es lag an der Kleinschreibung. Wegen dem Account Controller habe ich mich verschrieben… Es soll nicht vom Account erben. Schlecht wäre es nicht :slight_smile: Sobald der Controller aufgerufen wird, rendert der das Template nicht richtig [code]{extends file=‘frontend/account/index.tpl’} {* Breadcrumb *} {block name=‘frontend_index_start’ append} {$sBreadcrumb = [‘name’=>"{s name=‘myBreadcrum’}Mein Controller{/s}", ‘link’=>{url}]} {/block} {* Main content *} {block name=‘frontend_index_content’}

Content

{/block}[/code] Auch der Link zum Kundenkonto ist falsch… Was ist denn deiner Meinung nach relevanter Code wo man helfen kann? MfG

Lege das View Directory in deiner onPostDispatchAccount Funktion fest: $controller = $args-\>get('subject'); $view = $controller-\>View(); $view-\>addTemplateDir( \_\_DIR\_\_ . '/Views' ); Schau wo sich dein Plugin einklinkt und nimm dir die entsprechende Template-Datei. Wenn du beispielsweise die Index bearbeiten möchtest, dann benenne sie auch so und hole dir das Eltern-Template. {extends file='parent:frontend/account/index.tpl'} Der Pfad muss wie im Original aussehen, heir also “Views/frontend/account/index.tpl”.

1 „Gefällt mir“

Ich hoffe meine frage passt hierzu und zwar wollte ich in der Artikel Detail Seite über eine Modal Box ein Formular Öffnen und die eingegeben Daten dann Speichern. Meine Frage ist jetzt wie kann ich das Template über die Modal Box Öffnen ? … Ich habe es über ein Controller gemacht und dann die Methode aufgerufen und in der Methode extend sowie loadTemplate probiert, jedoch passiert nichts. class Shopware\_Controllers\_Frontnd\_\*PLUGINNAME\* extends Enlight\_Controller\_Action { public function \*ACTIONNAME\*(){ $this-\>View()-\>addTemplateDir($this-\>Path() . 'Views/'); //extendsTemplate $this-\>View()-\>loadTemplate( 'frontend/plugins/\*PLUGINNAME\*/\*TEMPLATE\*.tpl' ); } } Artikel Detail Seite der aufruf [code]

[Test]({url controller=‘CONTROLLER’ action=‘ACTION’})

[/code]