Besoin d'aide ?

Laravel : Avoir une route avec parametre dans Routegroup

Avatar de Shaninjah
Shaninjah

Salut,

Je veux acceder à : http://localhost/logiluxexe/public/en/games_giveaways/1 Mais cela ne fonctionne pas.

Routes :

Route::group(['middleware' => ['setlocale'],'prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}']], function() {
    Auth::routes();
    Route::get('/games_giveaways/{id}', [GameGiveawayController::class, 'show'])->name('games_giveaways.show');
});

Middleware :

public function handle(Request $request, Closure $next) {
        if(session()->has('locale')){
            app()->setLocale(session()->get('locale'));
            //Carbon::setLocale(session()->get('locale'));
        } elseif ($request->segment(1)) {
            app()->setLocale($request->segment(1)); 
        } else {
            app()->setLocale('en');  
        }
        return $next($request);
    }

Error :


 Missing required parameter for [Route: games_giveaways.show] [URI: {locale}/games_giveaways/{id}]
 [Missing parameter: id]. (View: C:\wamp64\www\logiluxe\resources\views\layouts\app.blade.php)

C'est comme si je ne pouvais pas avoir de route dans mon grouproute. Une idée ?

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

Est-ce que dans ta fonction show le parametre s'appelle bien id ?

Sinon, tu peux tenter d'écrire ta route plutôt comme ça pour voir:

Route::get('/games_giveaways/{id}', 'GameGiveawayController@show')->name('games_giveaways.show');

Avatar de Shaninjah
Shaninjah

Je suis sous laravel 8 J'ai pas l'impression que le code fonctionne sur cette version Route::get('/games_giveaways/{id}', 'GameGiveawayController@show')->name('games_giveaways.show');

Oui dans la fonction show du controller, le parametre s'appel $id.

Avatar de CinquièmeDimension
CinquièmeDimension

Salut,

As-tu résolu ton problème ? Sinon j'ai pensé à un truc:

Essaye de rentre ton paraetre optionnel juste pour pouvoir acceder à ton contoller

Route::group(['middleware' => ['setlocale'],'prefix' => '{locale}', 'where' => ['locale' => '[a-zA-Z]{2}']], function() {
    Auth::routes();
    Route::get('/games_giveaways/{id?}', [GameGiveawayController::class, 'show'])->name('games_giveaways.show');
});

Et tu fais un dd($id); dans ton controller pour voir ce qu'il dit

Vous ne pouvez pas répondre à ce sujet.