首页 > 解决方案 > 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');  

标签: phplaravele-commerce

解决方案


除了没有将变量适当地传递给刀片视图(其他答案已指出)之外,您还尝试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刀片视图和逻辑移动到可以环绕您想要或包含的任何其他文件的组件。

文档很简单,但是如果您想让我向您展示如何实现它来解决您的困境,请在下面的评论中联系我。


推荐阅读