Вы можете либо сделать @include()
, либо вы можете вернуть его через контроллер, вы не можете сделать оба. Я думаю, вы можете быть немного перепутаны со структурой вашего проекта.
Если вы используете @include
, это не ударит по контроллеру. Таким образом, теоретически вам нужно будет включить ['products' => $products]
в каждый метод контроллера.
Вот как бы я это сделал:
sidebar.blade.php:
<nav class=" d-none d-md-block bg-light sidebar">
<div class="sidebar-sticky">
<form>
<div class=" input-group">
<input class="form-control" type="text" placeholder="Search...">
<button type="submit" class="btn btn-primary" value="search">Search</button>
</div>
</form>
@foreach($products as $product)
<span id="catName">{{ $product->name }}</span>
<h2>No category to show</h2>
@endforeach
</div>
</nav>
app.blade.php:
<div class="col-md-4 col-lg-4 col-sm-12">
@include('pages.sidebar')
</div>
Создайте новый файл (или используйте существующий) для домашней страницы внутри папки pages, мы назовем его home.blade.php
home.blade.php:
@extends('layouts.app')
Измените представление, которое вы возвращаете в контроллере, на новый home.blade.php
файл.
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
public function index()
{
$product = Product::get();
return view('pages.home', ['products' => $product]);
}
}