【问题标题】:how to check if object's variable is not empty?如何检查对象的变量是否为空?
【发布时间】:2020-06-05 13:43:21
【问题描述】:

我不知道我是否正确地提出了这个问题。但是,我有 2 个表格 - 产品和类别(多对多关系),并且在类别页面中我想显示它的分页产品(如果有的话),如果没有的话 - 我想显示“未找到产品” .它有效,但没有分页。

这是控制器:

public function show($slug)
{
    $category = $this->categoryRepository->findBySlug($slug);
    $paginate = $category->products()->paginate(6);

    return view('site.pages.category')->with(['category' => $category,
    'paginate' => $paginate]);
}

如何实现这一目标?

【问题讨论】:

  • 使用!empty($var);isset($var);
  • 这能回答你的问题吗? check if variable empty
  • “空”是什么意思?未定义的 AKA null,空字符串 "" 或空白字符串 " " ?
  • @JustinE 我这样修改了控制器: 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'));然而,现在我得到了这个:调用一个成员函数 products() on null..

标签: php laravel


【解决方案1】:

将它包裹在像if(isset($your_variable) && !empty($your_variable)){ 这样的 if 语句中,您可能只需要 isset 或 !empty,但您可以乱来看看有什么用。希望对您有所帮助!

【讨论】:

  • 我这样修改了控制器: 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'));然而,现在我得到了这个:调用一个成员函数 products() on null..
【解决方案2】:

我这样修改了控制器:

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

但是,现在我明白了:在 null 上调用成员函数 products()..

【讨论】:

  • $category 此处必须为空。
  • @JustinE 更改为 $category 时出现同样的错误。我不认为 $category 应该为空。我想显示有产品的类别和没有产品的类别。
  • @VargVIkernes 只需调试每一行。首先,在$category = $this->categoryRepository->findBySlug($slug); 行之后使用dd($category);。你不会在这里得到一个对象。这就是您收到错误 Call to a member function products() on null 的原因。
【解决方案3】:

试试下面的代码。我不是 Laravel 开发人员,但只是查看了一些文档并写了这个答案。

您收到Call to a member function products() on null 错误,因为$category 为空(没有任何数据)。所以你应该在调用products()之前检查$category是否有数据。

您可以检查刀片模板中的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]);
}

并且在您的 Blade 模板中,检查 $products 是否为空,

@if ($products)
    @foreach ($products as $product)
        {{ $product->name}}
    @endforeach
    {{ $products->links() }}
@else
    products not found
@endif

显然,根据您的需要更改模板。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-20
    • 2012-02-05
    相关资源
    最近更新 更多