Hallo zusammen, ich habe mal versucht nach Anleitung im Gambio Developer ein Modul für den Adminbereich zu erstellen. Ich habe die Beispiele aus den Tutorials verwendet, bekomme aber eine Fehlermeldung. Ich habe auf meinem Testserver die Version 4.5.1.0_Beta2 routes.php Code: <?php use Gambio\Core\Application\Routing\RouteCollector; use GXModules\Thrownatur\AdminCombiCollections\Admin\GetAdminCombiCollections; return static function (RouteCollector $routeCollector) { $routeCollector->get('/admin/GetAdminCombiCollections', GetAdminCombiCollections::class)->setName('GetAdminCombiCollections'); }; GetAdminCombiCollections.php Code: <?php namespace GXModules\Thrownatur\AdminCombiCollections; use Gambio\Core\Application\Http\Response; use Gambio\Admin\Application\Http\AdminModuleAction; /** * Class SampleAction * @package GXModules/<Vendor>/<Module> */ class GetAdminCombiCollections extends AdminModuleAction { /** * Parses a admin template and returns it as response. * * @return Response */ protected function handle(): Response { $pageTitle = $this->translate('sample_module_title_text_phrase', 'sample_module_section'); $templatePath = '/Html/admin_combi_collection.html'; $templateData = [ // key value pairs that are accessible in the template 'greeting' => 'Hello World' ]; $template = $this->render($pageTitle, $templatePath, $templateData); return $this->response->write($template); } } admin_combi_collection.html Code: {extends file="layout.html"} {block name="content"} <div>{$greeting}</div> {/block} Fehlermeldung: Jemand eine Idee was ich falsch gemacht haben könnte? Danke
Hi Sven, die Meldung besagt, dass Du in der GetAdminCombiCollections.php Zeile 16 Code: protected function handle(): Response ersetzen solltest durch Code: public function handle(): Response
Hi Dominik, danke für Deine Antwort. Das hatte ich aus Neugierde auch probiert gehabt, dann kommt aber folgende Fehlermeldung: Und ich habe dann mal in die verschiedene Dateien geschaut die ebenfalls die handle() aufrufen und die stehe alle auf protected.
Die jetzige Meldung sagt, dass die Methode gerne 2 Parameter hätte: Code: public function handle(Request $request, Response $response): Response
Oki danke, wir sind schonmal weiter. Nun wird der Admin Bereich wieder aufgerufen, aber mit einem 500 - Server-Fehler. Im Log steht folgende: Im Ordner Liegt die Datei GetAdminCombiCollections.php
Code: use GXModules\Thrownatur\AdminCombiCollections\Admin\GetAdminCombiCollections; soll vermutlich den hier hier referenzieren: Code: namespace GXModules\Thrownatur\AdminCombiCollections; Dann fehlt da wohl ein \Admin im Namespace: Code: namespace GXModules\Thrownatur\Admin\AdminCombiCollections;
Hmm im Thrownatur Ordner ist aber der AdminCombiCollections Ordner und dann kommt erst der Admin Ordner. Ich habe mich versucht an die Vorgaben hier zu halten: https://developers.gambio.de/docs/4.../module-development/admin/define-http-routes/ Vendor = Thrownatur Module = AdminCombiCollections Anstelle von HttpActions habe ich Admin genommen. SampleGetAction heißt bei mir GetAdminCombiCollections. Für die HTTP Action habe ich mich für folgendes Snippet entschieden und angepasst Hier habe ich wieder Vendor und Module ausgetauscht und den $tempatePath angepasst. Zusätzliche habe ich jetzt noch di Methode abgeändert: Code: public function handle(Request $request, Response $response): Response Und damit das funktioniert, musste ich noch oben Code: use Gambio\Core\Application\Http\Request; Hinzufügen
So ich habe den Namespace nun abgeändert in: Code: namespace GXModules\Thrownatur\AdminCombiCollections\Admin; Die Klasse wird nun gefunden, nun gehen die Fehlermeldungen aber weiter. Und nun kommt: Entweder bin ich echt zu ungeschickt für die neue Variante, oder das Tutorial ist eher ein Platzhalter für die richtige Version die irgendwann mal kommt.
@BigRib Du musst deine Action noch Registrieren über einen Service Provider, siehe (Link nur für registrierte Nutzer sichtbar.) Hier im Anhang ein Sample Modul wie du das einbauen kannst
Hallo @Till (Gambio) darf ich die folgende Frage hier noch anhängen? Passt ja irgendwie zusammen. Ich habe die AdminHeaderExtenderComponent überladen, die wird beim Cache löschen auf der "Cache löschen Seite" auch eingebunden. Auf meiner selbst erstellten Admin-Seite jedoch nicht. Muss ich da noch was einfügen, damit die Extender eingebunden werden?
@BigRib Kannst du uns mal etwas genauer erzählen was du im HeaderExtender noch hinzufügen willst, weil in den neuen Admin Seiten ist das alles anders, hier greifen keine Extender für den AdminHeader.
@Till (Gambio) ich wollte JS einbinden mit dem ich bei Click in eine Checkbox dies direkt in die Datenbank schreiben kann. Also per Javascript eine PHP Methode aufrufen und Daten übergeben.
@BigRib Es gibt im HTML einen Block den du überladen oder ergänzen kannst In deiner HTML Datei fügst du einfach folgenden Block ein: HTML: {block name="custom_scripts"} <script src="{$myJS}"></script> {/block} In deiner PHP Datei fügst du das ein: PHP: public function handle(Request $request, Response $response): Response { $templateData = [ // key value pairs that are accessible in the template 'myJS' => "{$this->url->base()}/GXModules/MeineFirma/MeinModul/pfadZuMeinerJavaScriptDatei.js" ]; $template = $this->render($pageTitle, $templatePath, $templateData); return $response->write($template); } Du musst also kein Overload mehr für AdminHeaderExtenderComponent erstellen.
@Till (Gambio) Super! Das funktioniert wunderbar, nur $this->url->base() ist an der Stelle nicht bekannt. Gruß