3 回答
TA贡献1776条经验 获得超12个赞
试试下面的代码。我不是 Laravel 开发人员,只是看了一些文档并写了这个答案。
您收到Call to a member function products() on null错误消息,因为$category它为空(没有任何数据)。所以你应该在调用之前检查是否$category有任何数据products()。
您可以检查products刀片模板中是否为空并相应地打印消息。无需为此呈现另一个模板。
public function show($slug)
{
$category = $this->categoryRepository->findBySlug($slug);
if ($category) {
$products = $category->products()->paginate(6);
}
return view('site.pages.category')->with(['products' => $products]);
}
在你的刀片模板中,检查$products不为空,
@if ($products)
@foreach ($products as $product)
{{ $product->name}}
@endforeach
{{ $products->links() }}
@else
products not found
@endif
显然,根据您的需要更改模板。
TA贡献1829条经验 获得超6个赞
我这样修改了控制器:
public function show($slug)
{
$category = $this->categoryRepository->findBySlug($slug);
$products = $category->products();
if(isset($products) && !empty($products)){
$paginate = $products->paginate(6);
return view('site.pages.category')->with(['category' => $category,
'paginate' => $paginate]);
}
else {
return view('site.pages.category', compact('category'));
}
}
但是,现在我明白了:Call to a member function products() on null..
TA贡献1757条经验 获得超7个赞
将它包裹在一个 if 语句周围,比如if(isset($your_variable) && !empty($your_variable)){
你可能只需要 isset 或 !empty,但你可以四处乱逛,看看有什么用。希望有帮助!
- 3 回答
- 0 关注
- 148 浏览
添加回答
举报