【发布时间】:2019-01-09 21:59:59
【问题描述】:
我正在使用 laravel 提供具有以下路线的搜索页面:
Route::get('/search', 'PagesController@search');
Route::get('/search/{q}', 'PagesController@search');
Route::post('/search', 'PagesController@search');
第一个路由处理对应该显示搜索表单的搜索页面的访问。 第二个路由需要 URL 上的一个参数,该参数允许为搜索添加书签。 第三条路由从第一页接收表单作为 POST 并处理搜索。
三个路由中的每一个都尝试使用 PagesController 中的一个函数。
public function search(Request $request)
{
if ($request->has('q')) {
$q = $request->input('q');
}
if ($q) {
$models = Model::where('name', 'LIKE', "%{$q}%")
->orderBy('name', 'desc')
->take(10)
->get();
return view('pages.search', [ 'models' => $models, 'query' => $q ]);
}
return view ('home')->withMessage('No Details found. Try to search again !');
}
我的问题是如何让单个 Controller 函数来处理三个路由?要从 URL 中传入 {q},我认为我需要向搜索函数添加另一个参数,但这会在没有 {q} 的两条路由上失败。
在这种情况下,是不是每种响应都有一个单独的函数?
【问题讨论】: