laravel - 如何在 Laravel 中包含一个侧边栏以显示在所有页面上
问题描述
我想显示一个侧边栏,显示 Laravel 中我所有页面中数据库中的数据,但我不断收到此错误:
未定义变量:products(查看: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>
解决方案
你可以做@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]);
}
}
推荐阅读
- imagemap - 如何使背景图像的一部分成为可点击的链接
- javascript - 无法通过 AJAX 将数组发送到 php?
- python - 按频率和值对列表进行排序
- indexing - Keras 嵌入位置信息
- rabbitmq - 具有单个连接对象的 RabbitMQ 多个消费者
- sql - SQL Server:来自 JSON 对象数组的连接字符串
- flutter - 为什么 Flutter ListTile onTap 似乎被缓存了?
- sql-server - ASP.NET Core MVC 接受来自用户的列表并更新与该列表匹配的数据库记录
- php - ImageMagick 动画 GIF 压缩
- asp.net - 由于多对多关系MVC,如何设置链接到关联表的多个复选框的值