将值传递给Laravel中的问题

时间:2017-08-16 14:19:34

标签: php laravel laravel-5 laravel-5.2

) 我试图按价格订购我的产品并且我一直收到相同的消息错误:未定义的索引: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'];  

        }
    }

1 个答案:

答案 0 :(得分:0)

您正在使用$dataview('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}', ...);