doudou7361 2017-03-14 03:58
浏览 61
已采纳

laravel应用通配符路由和控制器

I have some routes that look like repeated.

// Point
  Route::get('admincp/point', 'PointController@index');
  Route::post('admincp/point/store', 'PointController@store');
  Route::get('admincp/point/{id}/edit', 'PointController@edit');
  Route::patch('admincp/point/{id}/update', 'PointController@update');
  Route::get('admincp/point/{id}/destroy', 'PointController@destroy');

// Faq
  Route::get('admincp/faq', 'FaqController@index');
  Route::post('admincp/faq/store', 'FaqController@store');
  Route::get('admincp/faq/{id}/edit', 'FaqController@edit');
  Route::patch('admincp/faq/{id}/update', 'FaqController@update');
  Route::get('admincp/faq/{id}/destroy', 'FaqController@destroy');

// Slider
  Route::get('admincp/slider', 'SliderController@index');
  Route::post('admincp/slider/store', 'SliderController@store');
  Route::get('admincp/slider/{id}/edit', 'SliderController@edit');
  Route::patch('admincp/slider/{id}/update', 'SliderController@update');
  Route::get('admincp/slider/{id}/destroy', 'SliderController@destroy');

I don't want to repeat myself. Can I do in laravel something like this?

function generateRoute($name) {
      Route::get("admincp/$name", "{$name}Controller@index");
      Route::post("admincp/$name/store", "{$name}Controller@store");
      Route::get("admincp/$name/{id}/edit", "{$name}Controller@edit");
      Route::patch("admincp/$name/{id}/update", "{$name}Controller@update");
      Route::get("admincp/$name/{id}/destroy", "{$name}Controller@destroy");
}
  • 写回答

1条回答 默认 最新

  • dsgdhtr_43654 2017-03-14 04:04
    关注

    Use resource routes:

       Route::group(['prefix' => 'admincp'], function () {
            Route::resource('point', 'PointController');
            Route::resource('faq', 'FaqController');
            Route::resource('slider', 'SliderController');
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?