Как включить боковую панель в Laravel для показа на всех страницах - PullRequest
0 голосов
/ 03 мая 2019

Я хочу показать боковую панель, которая отображает данные из базы данных на всех моих страницах в Laravel, но я получаю эту ошибку:

Неопределенная переменная: products (View: C: \ xampp \htdocs \ shop \ resources \ views \ pages \ sidebar.blade.php) (Просмотр:

Боковая панель

@extends('layouts.app')
<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>

Контроллер

public function index()
{
    $product = Product::get();

    return view('pages.sidebar', ['products' => $product]);    
}

Маршрут

Route::resource('sidebar','SidebarController');

app.blade.php

<div class="col-md-4 col-lg-4 col-sm-12">
    @include('pages.sidebar')
</div>

Ответы [ 2 ]

0 голосов
/ 09 мая 2019

Мне, наконец, нужно использовать view composer для решения этой проблемы. Спасибо

0 голосов
/ 06 мая 2019

Вы можете либо сделать @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]);
    }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...