尝试使用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');
答案 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