“未定义的变量:书籍

Posted

技术标签:

【中文标题】“未定义的变量:书籍【英文标题】:"Undefined variable: books 【发布时间】:2019-01-03 03:59:31 【问题描述】:

我收到此错误:

"未定义变量:书籍(查看: C:\xampp\htdocs\Shop\resources\views\welcome.blade.php)"

我在Welcome.blade.php 中显示我的项目时遇到问题,因为它说我有一个未定义的变量。而且我找不到让它工作的方法。

这是我的模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Product extends Model

    protected $fillable = [
        'name',
        'description',
        'condition',
        'category_id',
        'image'
    ];

    public function category()
    
        $this->belongsTo(Category::class);
    

这是我的ProductsController

 namespace App\Http\Controllers;

 use Illuminate\Http\Request;
 use App\Category;
 use App\Product;

class ProductsController extends Controller

    public function index()
    
        $products = Product::all();
        return view('admin.product.index',compact('products'));
    

    public function create()
    
        $categories = Category::pluck('name','id');
        return view ('admin.product.create', compact('categories'));
    


    public function store(Request $request)
    
        $product = $request->except('image');

        //validation
        $this->validate($request,[
            'name' => 'required',
            'condition' => 'required',
            'image' => 'image|mimes:png,jpg,jpeg|max:10000'
        ]);


        //image upload
        $image = $request->image;
        if( $image )
            $imageName=$image->getClientOriginalName();
            $image->move('images',$imageName);
            $product['image']=$imageName;
        

        Product::create($product);
        return redirect()->route('admin.index');
    

这是我的Welcome.blade.php

<div class="row">
    @forelse( $books as $book)
        <div class="column-prod">
            <a href="route('book')">
                <div class="card-prod">
                    <center>
                        <img src="/css/aa.jpg"  style="width: 300px; height: 300px;">
                    </center> 
            </a>
            <div class="container-prod">
                <h2></h2>
                <p class="title">$book->name</p>
                <p class="price">Php 450.00</p>

                <p>
                    <button class="button">
                        <i class="fas fa-cart-arrow-down"></i>Add to Cart
                    </button>
                </p>

                <p>
                    <button class="button">
                        <i class="fas fa-heart"></i>  Add to Wishlist
                    </button>
                </p>
            </div>
        </div>
    </div>

    @empty
         <h3> No Books </h3>
    @endforelse

</div> <!--Div all end-->
@endsection

这是我的web.php,很抱歉我是新手……希望你能帮助我。

<?php
Route::get('/', function () 
    return view('welcome');
);

Route::get('/cart','ShopController@cart');

Route::get('/signin','ShopController@signin');

Route::get('/book','ShopController@book');

Route::get('/wishlist','ShopController@wish');



Auth::routes();

Route::get('/logout', 'Auth\LoginController@logout');

Route::get('/home', 'HomeController@index');

Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function()
    Route::get('/',function()
        return view('admin.index');
    )->name('admin.index');


    Route::resource('product','ProductsController');
    Route::resource('category','CategoriesController');
);

【问题讨论】:

欢迎来到 ***。什么是返回 welcome 视图? 仅供参考,但看起来你的 div 结束标签放错了位置。 它返回错误...“未定义变量:书籍(视图:C:\xampp\htdocs\Shop\resources\views\welcome.blade.php)”它应该显示名称和图片我添加的产品 @Messi 向我们展示./routes/web.php 文件的内容 【参考方案1】:

替换

Route::get('/', function () 
return view('welcome');
);

Route::get('/', function () 
    return view('welcome')->with(['books' => \App\Product::all()]);
);

【讨论】:

@Messi 如果它解决了您的问题,然后将其作为可接受的答案,以便其他人可以发现它有用。谢谢【参考方案2】:

替换

Route::get('/', function () 
return view('welcome');
);

Route::get('/', function () 
    return view('welcome')->with(['books' => \App\Books::all()]);
);

(如果可行,那么您应该像处理其他代码一样将代码移动到控制器中)

【讨论】:

未定义books 这仍然会抛出与您传递 products 相同的错误,但视图正在寻找 $books

以上是关于“未定义的变量:书籍的主要内容,如果未能解决你的问题,请参考以下文章