php - ErrorException 未定义的变量:
问题描述
为什么我收到此错误?ErrorException 未定义变量:特性(查看:C:\xampp\htdocs....views\layouts\index.blade.php)
FeaturedController.php
public function index()
{
$features = Feature::get();
return view ('layouts.index')->with(compact('features'));
}
ProductsController.php
public function index()
{
$products = Product::get();
return view ('products')->with(compact('products'));
}
布局页面- index.blade.php
@yield('content')
@foreach($features as $f)
<li>
<div class="prodcut-price mt-auto">
<div class="font-size-15">LKR {{ $f ['features_id'] }}.00</div>
</div>
</li>
@endforeach
查看页面 - index.blade.php
@extends('layouts.index')
@section('content')
@foreach($products as $p)
<div class="mb-2"><a href="../shop/product-categories-7-column-full-width.html" class="font-size-12 atext">{{ $p ['prod_sub_category'] }}</a></div>
<h5 class="mb-1 product-item__title"><a href="../shop/single-product-fullwidth.html" class="text-blue font-weight-bold">{{ $p ['prod_name'] }}</a></h5>
<div class="mb-2">
<a href="../shop/single-product-fullwidth.html" class="d-block text-center"><img class="img-fluid" src="{{asset('/storage/admin/'.$p ['prod_image_path'] ) }}" alt="Image Description"></a>
</div>
<div class="flex-center-between mb-1">
<div class="prodcut-price">
<div class="atext">LKR {{ $p ['prod_price'] }}.00</div>
</div>
<div class="d-none d-xl-block prodcut-add-cart">
<a href="../shop/single-product-fullwidth.html" class="btn-add-cart btn-primary transition-3d-hover"><i class="ec ec-shopping-bag"></i></a>
</div>
网页.php
Route::resource('/products', 'ProductsController');
Route::resource('/layouts/index', 'FeaturedController@index');
解决方案
除了没有将变量适当地传递给刀片视图(其他答案已指出)之外,您还尝试features
从没有设置功能的控制器进行访问。
下面的控制器设置功能,然后在layouts.index
刀片文件中使用它。
FeaturedController.php
public function index()
{
$features = Feature::get();
return view ('layouts.index')->with(['features' => $features]);
// or
// return view ('layouts.index', compact('features'));
}
虽然此控制器设置products
但随后使用扩展另一个刀片文件的刀片文件,该刀片文件中包含features
变量。这就是您收到错误的原因
ProductsController.php
public function index()
{
$products = Product::get();
return view ('products', compact('products'));
}
要修复它,您必须像这样传递features
变量products
:
ProductsController.php
public function index()
{
$products = Product::get();
$features = Feature::get();
return view ('products')->with(['features' => $features, 'products' => $products]);
}
但是如果多个刀片文件要扩展这个layouts.index
文件,那么这种方法是不可取的,这样的情况就是 Taylor Otwell 引入刀片组件的原因。您现在可以将features
刀片视图和逻辑移动到可以环绕您想要或包含的任何其他文件的组件。
文档很简单,但是如果您想让我向您展示如何实现它来解决您的困境,请在下面的评论中联系我。
推荐阅读
- ios - 如何确保字典中的所有键都已初始化
- haskell - 结合来自两个 Either Monad 的结果
- reactjs - 当我使用 Metro bundle 运行和测试应用程序时,它运行良好。但是当我构建 android apk 它无法正常工作时,它会再次重新启动
- django - FilterView、get_context_data() 不起作用。没有属性“object_list”,但有一个
- python - 用python在sql字段中添加+10
- docker - docker 容器内的 Gunicorn 不断为 Flask 应用程序启动工作程序(容器部署在 VMWARE ESXi 上的 CentOS/Ubuntu 客户机上)
- integer - 如何将值返回为整数?
- javascript - RadPDF 无法在 Firefox 浏览器中编辑 acrofield 保存(它在 chrome 中工作)
- office-js - Outlook 365 加载项,调用 SOAP Web 服务并将电子邮件移动到文件夹
- c - 为什么卸载后分配给字典的内存仍然可以访问?CS50 拼写器