Zum Inhalt springen

Extbase Extension über Typoscript einbinden

Erstellt am 16. März 2014 · 10 Antworten · letzte Antwort am 22. März 2014

Tags: TYPO3 6.x, Frage

amir_88 ·

Hallo zusammen,

leider komm ich nicht weiter.

Ich habe die Extension wie folgt eingebunden. Aber bekomme leider nichts angezeigt. Es wir nicht mal das <h1>-Tag Ausgeben. Kann es sein das ich die Sidebar.html noch einbinden muss?

Wie im Code beschrieben funktioniert es wenn ich als return ein string einsetze wunderbar, aber mit dem Inhalt der Repo bzw. View als return erscheint nichts.

Vielen Dank im voraus!

Template/Bus/Sidebar.html:

<h1>Ausgabe</h1>
<f:layout name="Default" />
f:section name="main">
<f:for each="{buses}" as="bus">
	<f:link.action action="show" arguments="{bus : bus}">
				<div>{bus.bus}</div>
</f:for>
</f:section>

Controller:

public function sidebarAction() {
		$buses = $this->busRepository->findAll();
		 $this->view->assign('buses', $buses);
		 return $this->view->render();; 
                ## Wenn ich an dieser stelle ->return "xy"; < setze
                ## wird xy auch zurück geben, also schließe ich daraus 
                ## dass ich bei der Rückgabe der View noch einen Fehler habe

	}

Setup:

#Sidebar
lib.sidebar=COA
lib.sidebar {
 
    bar = USER
    bar {
        userFunc = tx_extbase_core_bootstrap->run
   
        # TYPO3 6.0 / Namespaces Kompatibilität
        vendorName = TYPO3
 
        pluginName = Busext
        extensionName = BusExt
        ##controller = Bus
        ##action = sidebar
        switchableControllerActions {
                Bus {
                        1 = sidebar
                        2 = list
                        3 = show
                        # aber eigentlich möchte ich nur die sidebar action ausführen

                       
                }
        }
        settings =< plugin.tx_busext.settings
        persistence =< plugin.tx_busext.persistence
        view =< plugin.tx_busext.view
 
    }
}

page.10.marks.CAT=< lib.sidebar.bar

[...]

ext_localconf.php

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'TYPO3.' . $_EXTKEY,
	'Busext',
	array(
		'Bus' => 'list, show, sidebar',
		
	),
[...]
Schweriner ·

Gehört das Template nicht unter Resources/Private/[...]? Was steht in den Kostanten? Werden die Kostanten eingebunden?

amir_88 ·

Hallo Schweriner,

danke für deine Unterschützung.

Mein Template Pfad Resources/Private/Templates/Bus (sorry hab ich nicht dran gedacht).

constants.txt

plugin.tx_busext {
	view {
		# cat=plugin.tx_busext/file; type=string; label=Path to template root (FE)
		templateRootPath = EXT:bus_ext/Resources/Private/Templates/
		# cat=plugin.tx_busext/file; type=string; label=Path to template partials (FE)
		partialRootPath = EXT:bus_ext/Resources/Private/Partials/
		# cat=plugin.tx_busext/file; type=string; label=Path to template layouts (FE)
		layoutRootPath = EXT:bus_ext/Resources/Private/Layouts/
	}
	persistence {
		# cat=plugin.tx_busext//a; type=string; label=Default storage PID
		storagePid =
	}
}

Also der Switcher funktioniert, wenn ich in meine list.html gehe und ein Record auswähle wird mir die Show doppelt angezeigt. Ein mal ander stelle wo ich über das Backend die Extension eingesetzt habe, und der stelle wo ich die Extension über die Typoscript(sidebar) eingebunden habe

Velletti ·

warum hast du in dem Typoscript die Action für die Sidebar nicht vorgegeben? das wolltest du doch oder ? oder verstehe ich das Problem nur nicht?

denn wenn du eh in der Sidebar nur die Action sidebar anziegen willst, dann wäre in meinen Augen das richtig

##action = sidebar

  controller = Bus
  action = sidebar
switchableControllerActions {
Bus {
1 = sidebar
 
}
}
amir_88 ·

vllt kommen wir der sacher näher.

wenn ich das scirpt wie folgt ab ändere gibt er nichts zurück

lib.sidebar=COA
lib.sidebar {
    bar = USER
    bar {
        userFunc = tx_extbase_core_bootstrap->run
      #tx_extbase_core_bootstrap->run
 
        # TYPO3 6.0 / Namespaces Kompatibilität
        vendorName = TYPO3
 
        pluginName = Busext
        extensionName = BusExt
        controller = Bus
        action = sidebar
        settings =< plugin.tx_busext.settings
        persistence =< plugin.tx_busext.persistence
        view =< plugin.tx_busext.view
 
    }
}

}
	public function sidebarAction() {
		$buses = $this->busRepository->findAll();
		 $this->view->assign('buses', $buses);
		 return "test"; 
		 ##return $this->view->render();
	}

aber wenn ich den code wie folgt angebe(switchableControllerActions)....

lib.sidebar=COA
lib.sidebar {
    bar = USER
    bar {
        userFunc = tx_extbase_core_bootstrap->run
      #tx_extbase_core_bootstrap->run
 
        # TYPO3 6.0 / Namespaces Kompatibilität
        vendorName = TYPO3
        pluginName = Busext
        extensionName = BusExt
        switchableControllerActions {
         Bus {
               1 = sidebar 
               }
          }
        settings =< plugin.tx_busext.settings
        persistence =< plugin.tx_busext.persistence
        view =< plugin.tx_busext.view
 
    }
}

}

....bekomme auch ich "test" als return züruck, aber sobald ich den return so setze......

"return $this->view->render();"

...wird wieder nichts angezeigt 🙁

Julian.​Hofmann ·

Hm, nachdem der Templatename/-pfade laut Deinem ersten/dritten Post zu passen scheint, würde mir hier noch eines auffallen: die nicht korrekt geöffnete "f:section" im geposteten Template. Da fehlt eine spitze Klammer.
Vielleicht ist es auch nur ein copy&paste-Fehler, aber zuoft sieht man den Wald vor lauter Bäumen nicht.

Ansonsten würd eich evtl. mal eine eigene View-Klasse einbauen und mittels Debugs Stück für Stück prüfen, wo es hängt.

amir_88 ·

Ja ist ein Copy&Past fehler.

Habe es mal mit den Fluid debugger probiert.

Sidebar.html

<f:debug title="Sidebar">{buses}</f:debug>

Controller:

    /**
	 * action sidebar
	 *
	 * @return  array $this
	 */
	public function sidebarAction() {
		$buses = $this->busRepository->findAll();
		 $this->view->assign('buses', $buses);
		 return $this->view->render();
	}

Debug output

Sidebar

TYPO3\CMS\Extbase\Persistence\Generic\QueryResultprototypeobject (empty)

Das Ergebnis sagt das das Array leer ist?! Ist die phpDoc angabe richtig ( * @return array $this)?

amir_88 ·

Fehler gefunden! 🙂 aber...

...Jetzt habe ich das problem ;( -> ist auch hier im forum beschrieben ->#114607

persistence {
		# geht nicht -> storagePid = {$plugin.tx_busext.persistence.storagePid}
		storagePid = 8
	}
The action "show" (controller "Bus") is not allowed by this plugin. Please check TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin() in your ext_localconf.php.

Habe die Lösung dann so umgesetzt. Funktioniert leider nicht

#Sidebar
lib.sidebar=COA
lib.sidebar {
    bar = USER
    bar {
        userFunc = tx_extbase_core_bootstrap->run
      #tx_extbase_core_bootstrap->run
 
        # TYPO3 6.0 / Namespaces Kompatibilität
        vendorName = TYPO3
 
        pluginName = Busext
        extensionName = BusExt
       # controller = Bus
        switchableControllerActions {
               Bus {
                        1 = sidebar
                }
        }
        #action = sidebar
        settings =< plugin.tx_busext.settings
        persistence =< plugin.tx_busext.persistence
        view =< plugin.tx_busext.view
         
    }
}
config.tx_busext {
  mvc {
    callDefaultActionIfActionCantBeResolved = 1
  }
}

Also wenn ich auf meine liste gehe ist bis dahin soweit alles ok(sidebar und list werden ausgeführt), aber wenn dann auf die show-action gehe.... bekomme ich die Fehlermeldung