【问题标题】:how can i use same route for two different controller function methods in laravel如何在 laravel 中为两种不同的控制器功能方法使用相同的路由
【发布时间】:2018-04-25 08:57:30
【问题描述】:

如何在 laravel 中为两种不同的控制器功能方法使用相同的路由

第一个控制器

public function index()
{
    $comproducts = Comproduct::paginate(6);

    $items = Item::orderBy('name')->get();

    return view('computer', compact(['comproducts', 'items']));

}

第二个控制器

public function index()
{
    return view('search.index');
}

我想将这两种不同的控制器功能用于一条路线。

这是我的路线名称

Route::get('/computer', [

'uses' => 'ComputerProductsController@index',
'as' => 'computer.list'

]);

【问题讨论】:

  • 以及如何决定何时调用哪个函数?

标签: php mysql laravel blade


【解决方案1】:

laravel 需要以某种方式确定您想要的确切方法。例如,您可以传递参数,该参数将识别要调用的方法。

public function index(Request $request)
{
   // if param exists, call function from another controller
   if($request->has('callAnotherMethod')){
       return app('App\Http\Controllers\yourControllerHere')->index();
   }
   $comproducts = Comproduct::paginate(6);

   $items = Item::orderBy('name')->get();

   return view('computer', compact(['comproducts', 'items']));

}

【讨论】:

    【解决方案2】:

    你不能。如果你想将搜索功能添加到你的第一个控制器的索引页面,你应该确定在你的控制器中显示哪个页面。

    一个可能的示例控制器:

    public function index(Illuminate\Http\Request $request)
    {
        // If the URL contains a 'search' parameter
        // (eg. /computer?search=intel)
        if ($request->has('search')) {
            // Do some searching here and 
            // show the search results page
            return view('search.index');
        }
    
        $comproducts = Comproduct::paginate(6);
    
        $items = Item::orderBy('name')->get();
    
        return view('computer', compact(['comproducts', 'items']));
    
    }
    

    【讨论】:

      猜你喜欢
      • 2018-09-10
      • 1970-01-01
      • 2013-09-24
      • 2016-03-29
      • 2021-11-05
      • 2017-04-05
      • 2016-10-03
      • 2016-03-03
      • 2017-12-22
      相关资源
      最近更新 更多