) 我试图按价格订购我的产品并且我一直收到相同的消息错误:未定义的索引:title(查看:C:\ xampp \ htdocs \ eshop \ resources \ views \ content \ item.blade.php)
据我所知,我的"项目"没有正确添加到$ data,但我无法弄清楚正确的方法是什么。
我的路线:
Route::get('shop/{category_url}/sorting-{sort?}', 'ShopController@products');
我在content.products中的观点:
@if($products)
<br><br>
<a href=" {{ url('shop/'.$category['url'].'/sorting-asc')}}" style="color:black"> High to low</a> |
<a href=" {{ url('shop/'.$category['url'].'/sorting-desc')}}" style="color:black">Low to high</a>
我的item.blade.php:
@extends ('master')
@section('content')
<div class="row">
<div class="col-md-12 text-center">
@if('item')
<h1>{{ $item['title']}}</h1>
<p><img width="500" src="{{ asset ('images/' . $item['image'])}}" </p>
<p>{!! $item['article'] !!}</p>
<p><b>Price on site:</b>{{ $item['price']}}$</p>
<p>
@if(Cart::get($item['id']))
<input disabled="disabled" type="button" value="In Cart!" class="btn btn-success">
@else
<input data-id="{{ $item['id']}}" type="button" value="+ Add to cart" class="btn btn-success add-to-cart">
@endif
<a href="{{ url('shop/checkout') }}" class="btn btn-primary">Checkout</a>
</p>
@else
<p class="text-center" style="font-size: 18px">No product details ...</p>
@endif
</p>
@endsection
我的控制器:
public function products(Request $request, $category_url, $sort= 'ASC'){
Product::getProducts($category_url, self:: $data);
$catsort = Categorie::where('url', '=', $category_url)->first();
$products = Product::where('categorie_id', $catsort->id)->orderBy('price', $sort)->get();
return view('content.products', self::$data ,['products' => $products, 'sort' => $sort]);
}
public function item($category_url, $product_url){
Product::getItem($product_url, self::$data);
return view('content.item', self::$data);
}
我的模特:
static public function getProducts($category_url, &$data){
$data['products']=$data['category']=[];
if ($category=Categorie::where('url','=', $category_url)->first()){
$category= $category->toArray();
$data['category']=$category;
$data['title']=$data['title']. ' | ' . $category['title'];
if ($products=Categorie::find( $category['id'])->products){
$data['products']= $products->toArray();
}
}
}
static public function getItem($product_url, &$data) {
$data['item'] = [];
if ($product = Product::where('url', '=', $product_url)->first()) {
$product = $product->toArray();
$data['item'] = $product;
$data['title'] .= '|' . $product['title'];
}
}
答案 0 :(得分:0)
您正在使用$data
将view('content.products', self::$data, ...)
从控制器传递到视图。
在您的模型中,您将产品数据添加到$data['item']
,可以通过变量$item
在视图模板中访问,然后将产品标题添加到$data['title']
,然后可以通过变量$title
在视图模板中访问。
只要您的产品数据正确加载,这应该可以正常工作,但情况似乎并非如此。
尝试使用{{ $item['title']}}
替换视图模板{{ $title }}
。如果这导致空标题,则表示产品数据未正确加载。确保您可以尝试使用{{ dd($item) }}
转储视图中的数据。
修改强>
您的routes.php
存在问题,您在此处发布的路线似乎不是问题,但另一个可能是。
如果您将其定义为Route::get('shop/{category_url}/{product_url}', ...)
,则两条路线都会与网址/category/sorting-asc
匹配。
您可以向网址添加内容以表明它是产品网址
Route::get('shop/{category_url}/product/{product_url}', ...);