试图在laravel

时间:2018-03-29 05:33:36

标签: laravel

尝试使用api从whmcs获取产品时,在laravel中获取非对象的属性“名称” 这是来自whmcs api的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'); 

3 个答案:

答案 0 :(得分:1)

我不确定您从API收到的回复是什么。 BTW使用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

如果您碰巧从API接收json数据。将数据转换为数组。 班级

GetProductController extends Controller
    {
        public function show(){

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

        $products = json_decode($products, true); // This will make it Object array.

        return view('main.SME_Hosting',compact('products'));
       }
     }

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

答案 1 :(得分:0)

您只需将此{{$product->name}}更改为{{$product['name']}}即可。 这是因为你的$产品在数组中,所以为了访问数组中你需要'[]'的任何元素。

答案 2 :(得分:0)

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

Caught exception: basic_string::substr