Laravel 试图获得财产';名称';拉威尔中的非宾语

Laravel 试图获得财产';名称';拉威尔中的非宾语,laravel,Laravel,当我使用api从WHMC获取产品时,尝试获取laravel中非对象的属性“name” 这是来自WHMCSAPI的json数据 "products": { "product": [ { "pid": "1", "gid": "1", "type": "hostingaccount", "name": "super lite", "description": "1 website", "module": "cpanel", "paytype": "recurring", "pricing": {

当我使用api从WHMC获取产品时,尝试获取laravel中非对象的属性“name” 这是来自WHMCSAPI的json数据

"products": {
"product": [
{
"pid": "1",
"gid": "1",
"type": "hostingaccount",
"name": "super lite",
"description": "1 website",
"module": "cpanel",
"paytype": "recurring",
"pricing": {
  "INR": {
    "prefix": "\u20b9",
    "suffix": "INR",
    "msetupfee": "0.00",
    "qsetupfee": "0.00",
    "ssetupfee": "0.00",
    "asetupfee": "0.00",
    "bsetupfee": "0.00",
    "tsetupfee": "0.00",
    "monthly": "-1.00",
    "quarterly": "-1.00",
    "semiannually": "-1.00",
    "annually": "1668.00",
    "biennially": "3096.00",
    "triennially": "3924.00"
  }
这是我的控制器代码

class GetProductController extends Controller
{
public function show(){

    $products = Whmcs::GetProducts([
        'pid',
        'name',
        'price',
        'description'


    ]);

    return view('main.SME_Hosting',['products'=>$products]);
   }
    }
这是我的视图代码

@foreach ($products as $product)
          {{$product->name}}              

@endforeach
这是我的路线

Route::get('SME_Hosting','GetProductController@show'); 

您只需将此
{{$product->name}}
更改为
{{$product['name']}

这是因为数组中的$products,所以要从数组中访问任何元素,都需要“[]”

请检查您的$products是否为空或不符合以下方式。你应该试试下面的解决方案

@if(!empty($products)
   @foreach ($products as $product)
      @if(isset($product->name) && $product->name =="")
           {{$product->name}}
       @else
         No record   
      @endif              

   @endforeach
@else
    No record Found....
@endif

我不确定您从API收到的响应是什么。顺便说一句,使用compact来传递数据,它更干净

class GetProductController extends Controller
{
    public function show(){

    $products = Whmcs::GetProducts([
        'pid',
        'name',
        'price',
        'description'
    ]);

    return view('main.SME_Hosting',compact('products'));
   }
 }
因此,要显示结果数据,请使用下面的代码。根据您的数据类型选择其中一种

对象数组

@foreach ($products as $product)
          {{$product->name}}              

@endforeach
@foreach ($products as $product)
     {{$product['name']}}        
@endforeach
普通阵列

@foreach ($products as $product)
          {{$product->name}}              

@endforeach
@foreach ($products as $product)
     {{$product['name']}}        
@endforeach
如果您碰巧从API接收到json数据。将数据转换为数组。 阶级


使用dd($products)来了解您从API接收到的数据类型总是很好的。

向我们展示
dd($products)
将以下内容更改为:
{{$product->name}
{$product['name']}感谢您的回复admcfajn,但我遇到了一个类似于非法字符串偏移量“name”的错误,您能给出一些建议吗solution@john在return view()尝试dd($products)之前,您将看到从api接收到的数据是什么,它是什么类型的数组,是json格式吗?等等。检查我的答案,希望它能解决你的问题。如果它是一个数组,并且它是空的,它无论如何都不会到达
{{$product->name}
行。如果数组是空的,那么你永远不会打印{{{$product->name}},但是如果{{$product->name}}是空的,那么你正在检查条件,请检查我编辑的答案。我在尝试获取属性非对象“name”时出错。我的json数据“products”:{“product”:[{“pid”:“1”,“gid”:“1”,“type”:“hostingaccount”、“name”:“super lite”、“description”:“1个网站”、“module”:“cpanel”、“paytype”:“经常性”、“定价”:{“INR”:{“前缀”:“\u20b9”、“后缀”:“INR”、“每月”:“-1.00”、“季度”:“-1.00”、“半年”:“-1.00”、“每年”:“1668.00”每两年一次:“3096.00”,“每三年一次”:“3924.00”}如果您从API获取json数据,请尝试控制器$products=json\U decode($products,true)。在您看来,尝试:{{{{$product->product->name}我的控制器代码中有一个错误。json\U decode()参数1应为字符串、数组given@john此错误是由bcoz json_decode()生成的。您希望对字符串进行解码,并将其作为数组提供。请显示您的json_decode()控制器代码以进一步说明??