首页 > 解决方案 > 是否可以使用单个路由通过控制器访问多个页面?

问题描述

我有多个页面需要通过数据库中的 id 访问它们,我发现很难在刀片模板中访问它们。我决定创建一个控制器来访问它们,所以可以这样做吗?

我的控制器:

 public function  index(Request $request,$id)
 {
         $categories  = Category::with('subcategories')
                      ->get();
         return View::make(['index','pages.quote','pages.video','pages.music','pages.radio','pages.inspiration','pages.gospel','pages.image'], [
         'categories'=>$categories
     ]);

 }

路线:

 Route::get('test','NewsletterController@test');
 Route::get('newsletter','NewsletterController@create');
 Route::post('newsletter','NewsletterController@store');
 Route::get('/', 'MainController@index')->name('index');
 Route::get('quote/{id}','HeaderController@index');
 Route::get('video/{id}','HeaderController@index');
 Route::get('radio/{id}','HeaderController@index');
 Route::get('inspiration/{id}','HeaderController@index');
 Route::get('gospel/{id}','HeaderController@index');
 Route::get('image/{id}','HeaderController@index');

刀片视图:

 <ul class="navbar-nav leftside mr-auto">
    @foreach($categories as $category)
       <li class="nav-item active">
         @if($category->id == 2 )
         <a class="nav-link" href="{{ route('index', ['id' => $category->id])}}">{{$category->name}} <span class="sr-only">(current)</span></a>
         @endif</li>
       </li>
    @endforeach
 </ul>

标签: laravellaravel-5eloquentlaravel-5.8

解决方案


我不知道你想用这个实现什么,但你可以这样做:

 public function  index(Request $request,$id){
     $categories  = Category::with('subcategories')->get();
     if ($id == 3){ // example
       $page = 'pages.quote';
     }elseif($id == 4){ // example
       $page = 'pages.video';
     }else{
       $page = 'index';
     }
     return View::make($page, ['categories'=>$categories]);
 }

推荐阅读