私は最初にすべての製品を表示し、サイドバーにはカテゴリのリストを表示できるビューで作業しています。私の目標は、ユーザーが任意のカテゴリを押すと、そのカテゴリの製品のみを表示することです。しかし、2つのコントローラがこのビューとやり取りして同じデータを送信しているので、1つは実行されていません(CategoriesController)。エラーは表示されません。各カテゴリのリンクをクリックすると、ページがリロードされません。ここ は私のProductsControllerです:Laravel 5.3複数のコントローラを1つのビューで使用する方法
class ProductsController extends Controller
{
// display all products and categories
public function index() {
$products = Product::all();
$categories = Category::all();
return view('frontend.product', compact('products','categories'));
}
そして、私のCategoriesController:ここ
class CategoriesController extends Controller
{
public function showProducts($category_id) {
$products = Category::find($category_id)->products;
return view('frontend.product', compact('products'));
}
が私の見解です:
// Products part
@foreach($products as $product)
{{ $product->name }}
@endforeach
//Categories part
@foreach($categories as $category)
<a href="{{ route('categories', [$category->id]) }}">{{ $category->name }} </a>
@endforeach
とルート:
Route::get('/products', [ 'as' => 'products', 'uses' => 'frontend\[email protected]']);
Route::get('/categories/{category_id}', ['as' => 'categories', 'uses' => 'backend\[email protected]']);
、その1 'の一つが実行されていませんか'?エラーは何ですか?ところで、あなたは 'CategoriesController'からカテゴリのリストを渡すことはありません。 –
また、SEO目的のためにURLを変更することをお勧めします。この回答を見てください:http://stackoverflow.com/questions/27598967/laravel-routing-varying#answer-27658499 –
私は質問を更新しました。はい、私はリストを渡していません。私はそれを追加しましたが、それは問題を解決しません –