Maison  >  Questions et réponses  >  le corps du texte

Utilisation de la méthode "resource"; dans Route::controller(<class>)->group(...)

J'édite les fichiers de routage de mes applications pour les rendre le plus ordonnés possible. J'ai donc fait ça dans mon "web.php" :

Route::controller(AlquilerController::class)->group(function ($hola) {
   
    //Debug lines
    error_log("This");
    error_log(get_class($this)); //Illuminate\Routing\RouteFileRegistrar.
    error_log("hola");
    error_log(get_class($hola)); //Illuminate\Routing\Router.

    Route::get('alquileres/busqueda', 'busqueda')->name('alquileres.busqueda');
    Route::get('alquileres/busqueda_texto', 'busquedaTexto')->name('alquileres.busqueda_texto');

    Route::middleware('auth')->get('alquileres/mis_alquileres', 'mis_alquileres')->name('alquileres.mis_alquileres');

    Route::post('/alquileres/filter_texto',  'filterTexto')->name('alquileres.filter_texto');
    Route::get('/alquileres/filter_texto',  'filterTexto')->name('alquileres.filter_texto_url');

    Route::post('/alquileres/filter',  'filter')->name('alquileres.filter');
    Route::get('/alquileres/filter',  'filter')->name('alquileres.filter_url');

    Route::resource('alquileres',AlquilerController::class)->parameters(['alquileres' => 'alquiler']);
});

Bien que cela fonctionne bien, je trouve cette ligne redondante : Route::resource('alquileres',AlquilerController::class)->parameters(['alquileres' => 'alquiler']);, parce que je répète le texte "AlquilerController::class", à la fois dans le paramètre 'Route::controller', puis dans le deuxième paramètre de 'Route::resource'.

Y a-t-il un moyen d'éviter cela ? J'ai essayé de faire un "error_log" au début du corps de rappel "group" juste pour voir ce que j'ai obtenu, mais je ne trouve pas de solution.

Merci beaucoup !

P粉475315142P粉475315142221 Il y a quelques jours521

répondre à tous(1)je répondrai

  • P粉022501495

    P粉0225014952024-04-05 00:55:16

    Comment déclarer une variable avec la valeur de la classe du contrôleur avant le groupe de routage, puis utiliser cette variable dans la classe du groupe de routage pour éviter la duplication

    $controllerClass = AlquilerController::class;
    
    Route::controller($controllerClass)->group(function () use ($controllerClass) {
    
        Route::get('alquileres/busqueda', 'busqueda')->name('alquileres.busqueda');
        Route::get('alquileres/busqueda_texto', 'busquedaTexto')->name('alquileres.busqueda_texto');
    
        Route::middleware('auth')->get('alquileres/mis_alquileres', 'mis_alquileres')->name('alquileres.mis_alquileres');
    
        Route::post('/alquileres/filter_texto',  'filterTexto')->name('alquileres.filter_texto');
        Route::get('/alquileres/filter_texto',  'filterTexto')->name('alquileres.filter_texto_url');
    
        Route::post('/alquileres/filter',  'filter')->name('alquileres.filter');
        Route::get('/alquileres/filter',  'filter')->name('alquileres.filter_url');
    
        Route::resource('alquileres', $controllerClass)->parameters(['alquileres' => 'alquiler']);
    });

    répondre
    0
  • Annulerrépondre