Laravel passa il parametro URL dal controller alla route
Come puoi passare un parametro dal controller alla route. Ad esempio, nel mio controller voglio reindirizzare l'utente a una rotta e anche allegare? UserID = xyz alla rotta. Come posso farlo? Quindi nel mio controller
public function mymethod(){
return route('getmydata', ['data'=> 1]);
}
Ho un percorso chiamato getmydata
Route::get('/data/{data}', function (Request $request, $data) {
...
})->name('getmydata');
Come posso passare? UserID nel mio controller in modo che il mio percorso possa essere / data / {data}? UserID = xyz
Grazie
EDIT continua a non funzionare:
Il mio controller:
public function mymethod(){
$userID = xyz; return route('getmydata', ['data'=> 1, 'userID' => $userID]);
}
E poi nel mio percorso:
Route::get('/data/{data}/', function ($data, $userID) {
...
})->name('getmydata');
Sto ottenendo
"Too few arguments to function App\\Providers\\RouteServiceProvider
Sto passando due parametri e me ne aspetto due. Cosa mi manca?
il percorso dovrebbe essere / data / {dati}? userID = xyz
Risposte
Puoi passare il parametro dal controller al percorso in questo modo:
return redirect()->route('getmydata', ['data'=> 1]);
// 127.0.0.1:8000/data/1
Con GETparametro:
return redirect()->route('getmydata', ['data' => 1]);
// 127.0.0.1:8000/data?data=1
Aggiornato : se vuoi un URL come questo http://127.0.0.1:8000/data/{data}?userID=xyz, puoi farlo passando un parametro extra con il percorso:
Route::get('/data/{data}', function (Request $request, $data) { ... })->name('getmydata');
return redirect()->route('getmydata', ['data'=> 1, 'userID' => 'xyz']);
// 127.0.0.1:8000/data/1?userID=xyz
Dovresti trasmetterli queryparamse recuperarli per $requestoggetto.
Route::get('/data/{data}', function (Request $request, $data) { $userID = $request->userID; // or $request->get('userID')
})->name('getmydata');