首頁  >  問答  >  主體

使用「資源」; Route::controller(<class>)->group(...) 中的方法

我正在編輯我的應用程式路由文件,以使它們盡可能整潔。 所以我在我的“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']);
});

儘管這工作正常,但我發現該行是多餘的: Route::resource('alquileres',AlquilerController::class)->parameters(['alquileres' => 'alquiler']);,因為我重複文字“AlquilerController::class”,兩者都在參數中'Route::controller',然後是'Route::resource'的第二個參數。

有什麼辦法可以避免這種情況嗎?我嘗試在“group”回調主體的開頭執行一些“error_log”,只是為了看看我得到了什麼,但我找不到解決方案。

非常感謝!

P粉475315142P粉475315142221 天前520

全部回覆(1)我來回復

  • P粉022501495

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

    如何在路由組之前使用控制器類別的值宣告一個變量,然後在路由組類別中使用該變數以避免重複

    $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']);
    });

    回覆
    0
  • 取消回覆