2017-08-16 2 views
0

) Ich versuche, meine Produkte nach Preis zu bestellen, und ich bekomme immer die gleiche Fehlermeldung: Undefinierter Index: Titel (Ansicht: C: \ xampp \ htdocs \ eshop \ Ressourcen \ Ansichten \ content \ item.blade.php)Problem mit Weitergabe von Wert in Laravel

Von dem, was ich verstand, wurde mein "Element" nicht richtig zu $ ​​Daten hinzugefügt, aber ich kann es nicht herausfinden, was der richtige Weg ist.

Meine Route:

Route::get('shop/{category_url}/sorting-{sort?}', '[email protected]'); 

Meine Ansicht in 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> 

Mein 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 

Mein Controller:

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); 
    } 

My Model:

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

Sie Fragen nicht umbuchen; Wenn Sie zusätzliche Einsichten haben, * editieren Sie Ihre Frage * anstatt einen anderen zu veröffentlichen. –

Antwort

0

Sie passieren $data von der Steuerung auf die Ansicht mit view('content.products', self::$data, ...).

In Ihrem Modell, fügen Sie die Produktdaten zu $data['item'], die in der Ansichtsvorlage durch die variable $item zugänglich sein werden, und dann fügen Sie den Produkttitel $data['title'], die dann in der Ansicht Vorlage durch die Variable zugänglich sein werden $title.

Dies sollte funktionieren, solange Ihre Produktdaten korrekt geladen werden, was nicht der Fall zu sein scheint.

Versuchen Sie, in der Ansicht Vorlage {{ $item['title']}} mit {{ $title }} zu ersetzen. Wenn dies zu einem leeren Titel führt, bedeutet dies, dass die Produktdaten nicht korrekt geladen werden. Um sicherzustellen, dass Sie versuchen können, die Daten in der Ansicht mit {{ dd($item) }} auszugeben.

EDIT

Es gibt ein Problem mit Ihrem routes.php und der Route du hier gepostet scheint nicht das Problem zu sein, aber das andere ist wahrscheinlich. Wenn Sie es als Route::get('shop/{category_url}/{product_url}', ...) definiert haben, entsprechen beide Routen der URL /category/sorting-asc.

Sie könnten etwas zur URL hinzufügen zu sagen, dass es ein Produkt-URL ist

Route::get('shop/{category_url}/product/{product_url}', ...); 
+0

Ich habe getan, wie Sie sagten, aber es zeigt mir das nächste $ item [] und jetzt ist der Fehler der Nachricht Undefined index: image (Ansicht: C: \ xampp \ htdocs \ myhero \ ressourcen \ views \ content \ item.blade.php). Hier ist meine Ansicht: https: // Pastebin.com/mmRfkm9F – Pioneer2017

+0

{{dd ($ item)}} gibt leeres Array zurück [] – Pioneer2017

+0

überprüfe, ob '$ product_url' korrekt an den Controller übergeben wird –

Verwandte Themen