Slim4: 405 Method Not Allowed

Wenn Slim V4 folgende Fehlermeldung ausgibt:

405 Method Not Allowed
The application could not run because of the following error:Type: Slim\Exception\HttpMethodNotAllowedException
Code: 405
Message: Method not allowed. Must be one of: get, post
File: /var/www/html/demo/vendor/slim/slim/Slim/Middleware/RoutingMiddleware.php
Line: 96
#0 /vendor/slim/slim/Slim/Routing/RouteRunner.php(72): Slim\Middleware\RoutingMiddleware->performRouting(Object(Slim\Psr7\Request))
#1 /vendor/slim/twig-view/src/TwigMiddleware.php(125): Slim\Routing\RouteRunner->handle(Object(Slim\Psr7\Request))
#2 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(140): Slim\Views\TwigMiddleware->process(Object(Slim\Psr7\Request), Object(Slim\Routing\RouteRunner))
#3 /vendor/slim/slim/Slim/Middleware/ErrorMiddleware.php(107): class@anonymous->handle(Object(Slim\Psr7\Request))
#4 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(140): Slim\Middleware\ErrorMiddleware->process(Object(Slim\Psr7\Request), Object(class@anonymous))
#5 /app/Middleware/TestMiddleware.php(13): class@anonymous->handle(Object(Slim\Psr7\Request))
#6 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(283): App\Kernel\System\Middleware\TestMiddleware->__invoke(Object(Slim\Psr7\Request), Object(class@anonymous))
#7 /app/Middleware/Test.php(12): class@anonymous->handle(Object(Slim\Psr7\Request))
#8 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(283): App\Kernel\System\Middleware\Test->__invoke(Object(Slim\Psr7\Request), Object(class@anonymous))
#9 /app/Middleware/TestMiddleware.php(146): class@anonymous->handle(Object(Slim\Psr7\Request))
#10 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(283): App\Kernel\System\Middleware\TestMiddleware->__invoke(Object(Slim\Psr7\Request), Object(class@anonymous))
#11 /app/Middleware/TestMiddleware.php(13): class@anonymous->handle(Object(Slim\Psr7\Request))
#12 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(283): App\Kernel\System\Middleware\ResponseHeaderMiddleware->__invoke(Object(Slim\Psr7\Request), Object(class@anonymous))
#13 /vendor/slim/slim/Slim/MiddlewareDispatcher.php(81): class@anonymous->handle(Object(Slim\Psr7\Request))
#14 /vendor/slim/slim/Slim/App.php(215): Slim\MiddlewareDispatcher->handle(Object(Slim\Psr7\Request))
#15 /vendor/slim/slim/Slim/App.php(199): Slim\App->handle(Object(Slim\Psr7\Request))
#16 /public/index.php(150): Slim\App->run()
#17 {main}

... dann kann Ihnen eine der folgenden Lösungen helfen:

Lösung 1

Ändern Sie die Schreibweise in Ihrem Routing ab. Slim akzeptiert nur GROSS geschriebene Methoden:

$app->map(array("get","post"), "/index", ...

wird zu

$app->map(array("GET","POST"), "/index", ...

Lösung 2

Wenn Sie allerdings diverse Routings definiert haben, kann das schnell zu einer recht lästigen Angelegenheit werden.

In diesem Fall können Sie auch im Slim Framework eine Anpassung durchführen, welche die Umschreibung automatisch für Sie durchführt:

Datei: vendor/slim/slim/Slim/Routing/RouteCollector.php
Anpassung in der Funktion "map" (ca. Zeile 270):

public function map(array $methods, string $pattern, $handler): RouteInterface
{ foreach ($methods as &$m) $m = strtoupper($m); $route = $this->createRoute($methods, $pattern, $handler); $this->routes[$route->getIdentifier()] = $route; $this->routeCounter++; return $route;
}

Die folgende, in den Quellcode eingefügte, Zeile ersetzt alle methoden in Großbuchstaben:

foreach ($methods as &$m) $m = strtoupper($m);

Dabei muss beachtet werden, dass ein Update des Frfameworks (z.Bsp. über "composer") diese Änderung wieder überschreibt.


Dieser Artikel hat Dir geholfen ?
.. und Dir nerviges Ausprobieren, Suchen und Zeit erspart ?

Dann würde ich mich sehr freuen, wenn Du diese werbefreie Hilfeseite mit einer kleinen Anerkennung unterstützen würdest.
Vielen Dank !
PayPal Donate QR Code

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

elf + siebzehn =