Laravel passa il parametro URL dal controller alla route

Oct 14 2020

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

1 sta Oct 14 2020 at 10:19

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
1 mateonunez Oct 14 2020 at 10:18

Dovresti trasmetterli queryparamse recuperarli per $requestoggetto.

Route::get('/data/{data}', function (Request $request, $data) { $userID = $request->userID; // or $request->get('userID')
})->name('getmydata');