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

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