Твой routes мог бы выглядить как-то так
Route::match(['get', 'post'], '/', 'Controller@index');
а твой контроллер как-то так
public function index(Request $request)
{
$cityName = '';
$categoryName= '';
$firmName= '';
if(isset($request->city_name) || isset($request->category_name) || isset($request->firm_name)){
//POST случай делаешь свои выборки, получаешь $списокТоваров
}
if(!isset($списокТоваров)){
//GET случай, когда первый раз зашёл на страницу.
}
return view('/', compact('списокТоваров', 'cityName ', 'categoryName', 'firmName'));