In Laravel v4 sono stato in grado di ottenere il nome del percorso corrente utilizzando ...
Route::currentRouteName()
Come posso farlo in Laravel v5 e Laravel v6 ?
In Laravel v4 sono stato in grado di ottenere il nome del percorso corrente utilizzando ...
Route::currentRouteName()
Come posso farlo in Laravel v5 e Laravel v6 ?
Risposte:
Prova questo
Route::getCurrentRoute()->getPath();
o
\Request::route()->getName()
dalla v5.1
use Illuminate\Support\Facades\Route;
$currentPath= Route::getFacadeRoot()->current()->uri();
Laravel v5.2
Route::currentRouteName(); //use Illuminate\Support\Facades\Route;
O se hai bisogno del nome dell'azione
Route::getCurrentRoute()->getActionName();
Documentazione del percorso di Laravel 5.2
Recupero dell'URI della richiesta
Il metodo path restituisce l'URI della richiesta. Pertanto, se la richiesta in arrivo è indirizzata a http://example.com/foo/bar
, il metodo path restituirà foo/bar
:
$uri = $request->path();
Il is
metodo consente di verificare che l'URI della richiesta in entrata corrisponda a un determinato modello. È possibile utilizzare il *
carattere come carattere jolly quando si utilizza questo metodo:
if ($request->is('admin/*')) {
//
}
Per ottenere l'URL completo, non solo le informazioni sul percorso, è possibile utilizzare il metodo url sull'istanza della richiesta:
$url = $request->url();
Laravel v5.3 ... v5.8
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Documentazione del percorso di Laravel 5.3
Laravel v6.x ... 7.x
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
** Attuale dall'11 novembre 2019 - versione 6.5 **
Documentazione del percorso Laravel 6.x.
C'è un'opzione per utilizzare la richiesta per ottenere il percorso
$request->route()->getName();
api/...
Route::currentRouteName();
perfetto :)
$request::route()->getName()
se stai già utilizzando la richiesta $ o puoi utilizzare l'helper globale request()::route()->getName()
.
request()->route()->getName()
è la strada da percorrere.
request()
funzione di aiuto è particolarmente utile nelle viste. request()->route()->getName()
è l'opzione migliore.
Usando Laravel 5.1, puoi usare
\Request::route()->getName()
{{ route(\Request::route()->getName()) }}
. Grazie mille!
Trovato un modo per trovare il nome della rotta corrente funziona per laravel v5 , v5.1.28 e v5.2.10
Spazio dei nomi
use Illuminate\Support\Facades\Route;
e
$currentPath= Route::getFacadeRoot()->current()->uri();
Per Laravel laravel v5.3 puoi semplicemente usare:
use Illuminate\Support\Facades\Route;
Route::currentRouteName();
Se è necessario l' URL , non il nome della route , non è necessario utilizzare / richiedere altre classi:
url()->current();
Se si desidera selezionare il menu su più percorsi, è possibile effettuare le seguenti operazioni:
<li class="{{ (Request::is('products/*') || Request::is('products') || Request::is('product/*') ? 'active' : '') }}"><a href="{{url('products')}}"><i class="fa fa-code-fork"></i> Products</a></li>
Oppure, se vuoi selezionare un solo menu, puoi semplicemente fare così:
<li class="{{ (Request::is('/users') ? 'active' : '') }}"><a href="{{url('/')}}"><i class="fa fa-envelope"></i> Users</a></li>
Testato anche in Laravel 5.2
Spero che questo aiuti qualcuno.
Laravel 5.2 È possibile utilizzare
$request->route()->getName()
Ti darà il nome del percorso attuale.
name()
metodo aggiungerà o modificherà il nome, mentre il getName()
metodo lo restituirà.
In 5.2, è possibile utilizzare la richiesta direttamente con:
$request->route()->getName();
o tramite il metodo helper:
request()->route()->getName();
Esempio di output:
"home.index"
Il modo più breve è la facciata del percorso
\Route::current()->getName()
Questo funziona anche in laravel 5.4. *
In un'azione del controller, potresti semplicemente fare:
public function someAction(Request $request)
{
$routeName = $request->route()->getName();
}
$request
qui è risolto dal contenitore di servizi di Laravel.
getName()
restituisce il nome del percorso solo per i percorsi denominati , null
altrimenti (ma è comunque possibile esplorare il\Illuminate\Routing\Route
oggetto per qualcos'altro di interessante).
In altre parole, dovresti avere il tuo percorso definito in questo modo per avere "nameOfMyRoute" restituito:
Route::get('my/some-action', [
'as' => 'nameOfMyRoute',
'uses' => 'MyController@someAction'
]);
Ora in Laravel 5.3
sto vedendo che può essere fatto in modo simile hai provato:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
https://laravel.com/docs/5.3/routing#accessing-the-current-route
Accesso al percorso corrente
Ottieni il nome del percorso corrente nei modelli Blade
{{ Route::currentRouteName() }}
per maggiori informazioni https://laravel.com/docs/5.5/routing#accessing-the-current-route
Accesso al percorso corrente (v5.3 in poi)
È possibile utilizzare i metodi current, currentRouteName e currentRouteAction sulla facciata del percorso per accedere alle informazioni sul percorso che gestisce la richiesta in arrivo:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Fare riferimento alla documentazione API sia per la classe sottostante della facciata del percorso sia per l'istanza del percorso per esaminare tutti i metodi accessibili.
Riferimento: https://laravel.com/docs/5.2/routing#accessing-the-current-route
$request->route()->getName();
Ho usato per ottenere il nome del percorso in larvel 5.3
Request::path()
Guardando \Illuminate\Routing\Router.php
è possibile utilizzare il metodo currentRouteNamed()
iniettando un router nel metodo del controller. Per esempio:
use Illuminate\Routing\Router;
public function index(Request $request, Router $router) {
return view($router->currentRouteNamed('foo') ? 'view1' : 'view2');
}
o usando la facciata del percorso:
public function index(Request $request) {
return view(\Route::currentRouteNamed('foo') ? 'view1' : 'view2');
}
È inoltre possibile utilizzare il metodo is()
per verificare se la route è denominata con uno dei parametri indicati, ma attenzione utilizza questo metodo preg_match()
e l'ho sperimentato per causare un comportamento strano con nomi di route punteggiati (come 'foo.bar.done'
). C'è anche la questione della performance attorno alla preg_match()
quale è un argomento importante nella comunità PHP.
public function index(Request $request) {
return view(\Route::is('foo', 'bar') ? 'view1' : 'view2');
}
Secondo me la soluzione più semplice sta usando questo aiuto:
request()->route()->getName()
Per i documenti, vedi questo link
Puoi usare il metodo seguente:
Route::getCurrentRoute()->getPath();
Nella versione Laravel> 6.0, è possibile utilizzare i metodi seguenti:
$route = Route::current();
$name = Route::currentRouteName();
$action = Route::currentRouteAction();
Accesso al nome del percorso corrente nel controller
ad es. http: // localhost / project_name / edit
$ Request-> segmento (1); //modificare
(o)
$ request-> url (); // http: // localhost / project_name / edit
In un file Helper,
È possibile utilizzare Route::current()->uri()
per ottenere l'URL corrente.
Quindi, se si confronta il nome del percorso per impostare la classe attiva nel menu, sarebbe utile se lo si utilizza
Route::currentRouteName()
per ottenere il nome del percorso e confrontare
per alcuni motivi, non ho potuto usare nessuna di queste soluzioni. quindi ho appena dichiarato il mio percorso web.php
come $router->get('/api/v1/users', ['as' => 'index', 'uses' => 'UserController@index'])
e nel mio controller ho ottenuto il nome del percorso usando $routeName = $request->route()[1]['as'];
quale $request
è il \Illuminate\Http\Request $request
parametro typehinted nel index
metodo diUserController
usando Lumen 5.6. Spero che possa aiutare qualcuno.
Soluzione:
$routeArray = app('request')->route()->getAction();
$controllerAction = class_basename($routeArray['controller']);
list($controller, $route) = explode('@', $controllerAction);
echo $route;
È possibile utilizzare il codice seguente per ottenere il nome del percorso nel file blade
request()->route()->uri