Zum Inhalt springen

Nach Einbindung von statischem Template "No template was found"

Erstellt am 4. Januar 2014 · 6 Antworten · letzte Antwort am 8. Januar 2014

Tags: Frage

3dknut ·

Hallo alle zusammen,
erst eimal allen ein frohes neues Jahr. Und wieder fängt es mit Schwierigkeiten an. Hab mir Typo3 6.1.3 sowie 6.1.7 installiert. Dann habe ich aus dem Buch " Typo3 Extensions 'Extbase & Fluid'" die kleine einfache Inventory-Extension mit dem ExtensionBuilder gebastelt. Nach der Installation und dem Anlegen einiger Datensätze wird das Ergebnis im Frontend angezeigt. Allerdings unformatiert. Wenn ich dann das statische Template der Extension mit der Typoscript Config ins rootTemplate einfüge, kommt die Fehlermeldung

The technical reason is: No template was found. View could not be resolved for action "list" in class "Tx_Inventory_Controller_InventoryController".

Habe dann mal noch andere auf Extbase basierende Extensions aus dem Extension-Repository geladen und getestet. Immer die gleiche Fehlermeldung nach dem Einbinden des statischen Templates.
Hatte erst den ExtensionBuider in Verdacht. Habe dann aber nochmal mit einer sauberen Typo3 6.x Version angefangen und da kommt genau das gleiche.
Ich habe auch bereits überprüft, ob der list-Template Filename in upperCammelCase geschrieben ist. Alles OK. Den Pfad hat der Ext.builder bereits richtig angelegt.
Habe noch eine 4.7er Version getestet. Dort funktioniert es einwandfrei.
Hat jemand eine Idee oder so ??? ;-(
Bin etwas am verzweifeln.

Grüße bis dahin.
3dKnut

harald1972 ·

Hallo,

The technical reason is: No template was found. View could not be resolved for action "list" in class "Tx_Inventory_Controller_InventoryController".

Der Klassenname ist noch aus der 4.7er Version. Die sehen in der 6er ganz anders aus (Namespace Schreibweise).

Ich habe auch bereits überprüft, ob der list-Template Filename in upperCammelCase

Was du da geschrieben hast ist lowerCamelCase. Der Filename des List-Templates lautet eigentlich nur "List.html" (UpperCamelCase) und sollte im Verzeichnis "Resources/Private/Templates/Inventory" liegen.

Mehr fällt mir im Moment nicht ein. Das statische Template hast du ja eingebunden. Weil eigentlich liegt der Fehler meistens hier.

Bis dann
Harald

3dknut ·

Hallo Harald,
wie schon gesagt, das Template ist mit Anfangsbuchstabe gross geschrieben im Ordner

...\ext\inventory\Resources\Private\Templates\Inventory\List.html

. Heute habe ich nochmal eine neue Extension im Typo3 6.1.7 mit dem ExtensionBuilder 2.5.2 erstellen lassen. Es ist da in den erzeugten Dateien der Namespace am Anfang mit drin. Nach der Installation das gleiche wieder. Ohne Einbinden des statischen Templates werden die Daten aus dem List-Template im Frontend auch angezeigt, so wie sie im o.g. Pfad stehen. Aber nach dem Einbinden des statischen Templates vergisst er anscheinend, wo der Pfad liegt und es wird natürlich auch keine Typoscript-Config aus der Extension eingelesen.
Irgendwie bin ich völlig ratlos.

Ach, und die Fehlermeldung ist wieder ähnlich.

Sorry, the requested view was not found.

The technical reason is: No template was found. View could not be resolved for action "list" in class "TYPO3\Inventory\Controller\InventoryController".

Gruß
3dknut

harald1972 ·

Hallo Knut,

sieht aus wie du sagst, als wär das deine erste Extension mit dem Ext.Builder 2.5.2
(Bei mir hat das auch nicht gleich alles geklappt)

Also... dein Pfad fängt hier mit TYPO3 an. Das hast du so übernommen, weil das im Ext.Builder halt so vorgegeben war.
Ich bin mir nicht so sicher, ob man das so lassen kann, aber ich denke, man sollte hier seinen eigenen Vendornamen verwenden.
Wenn ich's richtig verstanden hab, will deine Klasse, die hier TYPO3\Inventory\Controller\InventoryController heißt, in ihrer listAction() die View aus dem entsprechenden Verzeichnis laden. Dieses Verzeichnis gibt es aber so nicht. Wenn du also einen eigenen Vendornamen wählst, klappt's vielleicht schon.

Dazu musst du noch mal den ExtensionBuilder herholen. In der linken Spalte steht dort unter "Extension properties", "Name" und "Vendor Name". Per default steht da "TYPO3" - ändern!

Wenn alles stimmt, kannst du im TS-Object-Browser unter [plugin] deine Einstellungen sehen.
Da sollten dreimal [...RootPath] stehen und die Werte sollten dann entsprechend ext:inventory/Resources/Private/... lauten.
...Vorausgesetzt, du nennst deine Extension "inventory".

Du kannst ja mal schauen, was da jetzt schon steht. Vermutlich etwas, das es so nicht gibt.

Gruß
Harald

3dknut ·

Hi,
also ich habe die TestExtension nochmal überarbeitet und den Vendorname auf "Test" gesetzt.
Nach dem Einbinden des statischen Templates kommt das wieder :

Sorry, the requested view was not found.

The technical reason is: No template was found. View could not be resolved for action "list" in class "Test\Inventory\Controller\InventoryController".

Im Typoscript Objektbrowser habe ich mir das rootTemplate mal angesehen. Dort stehen unter plugin->tx_invenory->view der Pfad richtig drin. Aber wie gesagt, es kommt obige Fehlermeldung.

Nun habe ich festgestellt, das wenn ich die Pfade manuell ins Typoscript RootTemplate-Setup eintrage, dann funktioniert es.

plugin.tx_inventory.view {
  templateRootPath = EXT:inventory/Resources/Private/Templates/
  partialRootPath = EXT:inventory/Resources/Private/Partials/
  layoutRootPath = EXT:inventory/Resources/Private/Layouts/
}

Nun gut, wenn es mit den statischen Templates nicht funktioniert, dann muss ich halt jedesmal die Pfade per Hand eintragen. Das dumme ist nur, das dies auch bei allen anderen Extensions in Extbase wie z.B. News von Georg Ringer.
Ist, wenn es nicht anders geht doch recht nervig.

Gruß
3dknut

harald1972 ·

Also...

ich hab bei mir mal rumgespielt.
Wenn ich das statische Template entferne, sehe ich auch die 3 Einträge unter plugin->extension->view nicht mehr. Binde ich es wieder ein, sind auch die Einträge im ObjectBrowser wieder da.

Trotzdem habe ich keinerlei Fehlermeldung beim Aufrufen der entsprechenden Seite - mehrmals Cache gelöscht zwischendrin. (???)

Daß du das manuell eintragen musst, kann doch eigentlich garnicht sein.
Ich such grad schon ne Weile danach, wo dieser Eintrag denn erzeugt wird - kann's aber leider nicht finden.
Manuell eingetragen hab ich das noch nie, d.h. es muss ja irgendwie automatisch gehen.
Aber was passiert 'manuell'? Es werden doch genau diese 3 Werte erzeugt, wie du sie beschrieben hast (oder irre ich mich?)
o.O

Wie sieht denn die ext_localconf.php aus?
Da sollte dann folgender Aufruf sein...

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'Test.' . $_EXTKEY,
	'Inventory',
	array(
		'Inventory' => 'list, /* usw...*/
3dknut ·

Hi,
ohne statisches Template fehlen im Typoscript Objektbrowser auch die Pfadangaben fürs Template usw. Nach dem Leeren des Temp-Ordners und Löschen des Caches wird in diese Konstellation zumindest ja der Plugin Inhalt im FE angezeigt. Nach Einbindung des statischen Tpl. stehen zwar die Pfade unter 'view', aber es kommt die bereits genannte Fehlermeldung. Erst nach meiner o.beschriebenen Methode, die Pfade manuell in Typoscript einzutragen, funzt das ganze wieder. Und wie gesagt, es geht bei keiner auf Extbase basierenden Extension, nach dem Einfügen deren statischer Templates.
Hier noch ein Auszug aus meiner ext_localconf.php:

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
	'Test.' . $_EXTKEY,
	'Inventorylist',
	array(
		'Inventory' => 'list, show',
		
	),

Als Plugin-Name hatte ich Inventorylist vergeben.

Gruß
3dknut