Chcę pokazać mój produkt na jednej stronie, ale mam „Właściwość [nazwa] nie istnieje w tej instancji kolekcji”. błąd
Nóż:
<div class="title">
<h2>{{ $singleproduct->name }}</h2>
</div>
<div class="single-product-price">
<h3>{{ $singleproduct->price }}</h3>
</div>
<div class="single-product-desc">
<p>{!! $singleproduct->explain !!} </p>
</div>
Kontroler:
public function show()
{
$singleproduct = Singleproduct::get();
return view('UI.store.SingleProduct' , compact('singleproduct' ));
}
Trasa:
Route::get('/singleproduct/{product}' , 'admin\SingleproductController@show');
2 odpowiedzi
Masz kolekcję potencjalnie wielu Singleproduct
lub nie zawiera ich. Jeśli chcesz tylko 1, użyj first
.
Najprawdopodobniej dlatego, że jest to trasa show
, której potrzebujesz konkretnej Singleproduct
, którą, jak sądzę, przekazujesz „id” za pośrednictwem adresu URL.
public function show($product)
{
$singleproduct = Singleproduct::findOrFail($product);
return view('UI.store.SingleProduct', compact('singleproduct'));
}
Teraz w widoku wiesz, że singleproduct
jest zdecydowanie instancją Singleproduct
i jest dostępne.
Musisz wybrać tylko jeden produkt, a nie wszystkie, więc możesz zaktualizować swoją metodę show
w ten sposób
Za pomocą route model binding
możesz przeczytać więcej o tej niesamowitej funkcji w laravel dokumenty
public function show(Singleproduct $product)
{
return view('UI.store.SingleProduct' , compact('product' ));
}
Podobne pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.
get
zawsze zwraca Kolekcję ... jeśli chcesz 1 pojedynczy wynik, możesz użyćfirst
(co może zwrócićnull
)