How to get Route in der Middleware in Laravel
Derzeit kann ich eine route in einen controller injizieren in die Methode, die ich verwenden möchten.
<?php namespace App\Http\Controllers;
use Illuminate\Routing\Route;
class HomeController extends Controller
{
public function getIndex(Route $route)
{
echo $route->getActionName();
}
}
Aber ich bin versucht, etwas ähnliches in der middleware, aber nicht bekommen kann es gehen.
<?php namespace App\Http\Middleware;
use Closure;
use Illuminate\Routing\Route;
use Illuminate\Contracts\Routing\Middleware;
class SetView implements Middleware {
protected $route;
public function __construct(Route $route)
{
$this->route = $route;
}
public function handle($request, Closure $next)
{
echo $this->route->getActionName();
return $next($request);
}
}
Immer ein Fehler.
Unresolvable dependency resolving [Parameter #0 [ <required> $methods ]] in class Illuminate\Routing\Route
Nicht wirklich sicher, was zu tun. Nicht wirklich, ob es eine route oder nicht, müssen Sie aber bekommen, dass die Aktion irgendwie.
InformationsquelleAutor Rob | 2014-11-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Entfernen Konstruktor/stellen Sie es auf Standard wie;
Versuchen Sie, auf dem Weg über die handle-Methode wie so;
So dass Sie sollten in der Lage sein, um Zugriff auf den Namen der Aktion, wie so;
Wenn die route zurück null ist, werden Sie sicher, dass Sie registriert haben, die innerhalb der middleware App/Http/Kernel.php wie so;
Die oben genannten globalen middleware
Für die route spezifischen filtern legen Sie die
'Path\To\Middleware',
innerhalb der middleware-array RouteServiceProvider.php innerhalb derApp\Providers
Ordner.Können Sie auch auf der route-Objekt über
app()->router->getCurrentRoute()
.Edit:
Könnten Sie eventuell versuchen Sie die folgenden;
Diese Holen Sie sich die route von der
RouteCollection
. Werden Sie sicher, dass diese Kapseln innerhalb eines try-catch wie diese werden werfen Sie einenNotFoundHttpException
.\Route::current()
aber es ist ein großes Objekt, nicht sicher, wie Sie Sie ziehen alles, was von dort alsgetActionName()
wirft einen Fehler. Auch seltsam, obwohl ich die Eigenschaften festlegen können, die in der__construct
, wenn ich$this->route = \Route::current()
in den Bau und dieprint_r
imhandle
func nichts auftaucht. Obwohl, wenn ichprint_r
im__construct
bekomme ich das große Objekt ausdrucken.Versuchen Sie Bearbeiten, um die Antwort. @Rob
Noch nodda,
$request->route()
kommt gerade zurück, alsnull
.Haben Sie Hinzugefügt Ihre middleware in den App/Http/Kernal-middleware array-Variablen oder innerhalb der RouteServiceProvider? Wie könnte dies die Ursache sein von null auf $request->Weg().
Sie würde auch versuchen Zugriff via app()->router->getCurrentRoute()->getActionName()
InformationsquelleAutor Matt Burrow
Für Laravel 5.1.x
In Ihren globalen middleware
InformationsquelleAutor xnohat