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

时间:2017-11-12 16:56:52

标签: php mysql laravel blade

如何在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'

]);

2 个答案:

答案 0 :(得分:0)

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

public bool TableIsExists<T>(SQLiteConnection conn)
{
    var q = "SELECT name FROM sqlite_master WHERE type='table' AND name=?";
    var cmd = conn.CreateCommand(q, typeof(T).Name);
    return cmd.ExecuteScalar<string>() != null;
}

答案 1 :(得分:0)

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

可能的示例控制器:

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

}