我想显示一个侧边栏,该侧边栏显示我在Laravel中所有页面上的数据库数据,但是我一直收到此错误:
未定义变量:产品(查看: 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>
答案 0 :(得分:0)
您可以执行@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]);
}
}
答案 1 :(得分:0)
我最后必须使用View Composer来解决此问题。谢谢