I work with CRMs and data systems a lot and the following is something that I do to solve this.
Instead of having a separate method, just use the index one (where you list the data) and pass query strings to it.
public function index(Request $request)
{
$sort = $request->get('sort', null);
$products = Product::when($sort, function ($query) use ($sort) {
// can use the $sort var here if you wish to pass the column or asc/desc
$query->orderBy('price', 'desc');
})->get();
}
Then you can just sort it with a link or form depending on what your front-end is like.
<a href="{{ route('products.index', ['sort' => 'price']) }}">Sort by Price</a>