Utilisation de la méthode "resource"; dans Route::controller(<class>)->group(...)
P粉475315142
P粉475315142 2024-04-04 09:09:42
0
1
569

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粉475315142
P粉475315142

répondre à tous(1)
P粉022501495

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']);
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal