php - Laravel 无法访问下一页,因为试图获取非对象错误显示错误的属性
问题描述
我给出了一个让我有点困惑的代码。如果我转到我的 url,它会给我一个错误,trying to get property...
当我使用它dd
时$response
它说 null。有人可以告诉我该怎么做以及为什么我总是收到此错误吗?我知道发生这个错误是因为$response
变量没有和status
对象吗?我对吗?但是当我 dd$response
它说null
。提前致谢
我的控制器
public function pingDomain(Request $request){
$host = $request->staging == 1 ? env('PROPNEX_IP') : env('PROPNEX_IP_PROD');
$url = $host. '/propnex/index.php/domain/Ping_domain?domain='.urlencode($request->domain).'&host_ip='.$request->ip;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch,CURLOPT_HTTPHEADER,[
'Content-type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch));
// dd($response);
//ERROR IS HERE IN IF STATEMENT
if ($response->status == 0){
$host = $request->staging == 1 ? env('PROPNEX_IP') : env('PROPNEX_IP_PROD');
$url = $host . '/propnex/index.php/pnapi/addDomain?type=own&domain='.$request->domain. '&site-id='. $request->siteid;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch,CURLOPT_HTTPHEADER,[
'Authentication: '.$request->agentid . ':'. $request->auth
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch));
curl_close($ch);
if($response->status == "ok"){
return redirect()->route('ping-domain-success',[
"fname" => $request->fname,
"lname" => $request->lname,
"agentid" => $request->agenatid,
"auth" => $request->auth,
"email" => $request->email,
"prtname" => $request->prtname,
"cea"=> $request->cea,
"type" => $request->type,
"staging"=> $request->staging,
"domain" => $request->domain,
'status' => true,
"ip" => $request->ip,
"siteid"=> $request->siteid,
"isRenew" => $request->isRenew
]);
}else{
return redirect()->route('ping-domain-fail',[
"fname" => $request->fname,
"lname" => $request->lname,
"agentid" => $request->agenatid,
"auth" => $request->auth,
"email" => $request->email,
"prtname" => $request->prtname,
"cea"=> $request->cea,
"type" => $request->type,
"staging"=> $request->staging,
"domain" => $request->domain,
'status' => true,
"ip" => $request->ip,
"siteid"=> $request->siteid,
"isRenew" => $request->isRenew
]);
}
}else{
return redirect()->route('ping-domain-fail',[
"fname" => $request->fname,
"lname" => $request->lname,
"agentid" => $request->agenatid,
"auth" => $request->auth,
"email" => $request->email,
"prtname" => $request->prtname,
"cea"=> $request->cea,
"type" => $request->type,
"staging"=> $request->staging,
"domain" => $request->domain,
'status' => true,
"ip" => $request->ip,
"siteid"=> $request->siteid,
"isRenew" => $request->isRenew
]);
}
}
解决方案
发生这种情况是因为您的响应中没有值,并且您正在尝试访问响应的属性,但该属性不存在。
你可以把is_null
支票
把你的if-else
循环放在这个 if 条件下
public function pingDomain(Request $request){
$host = $request->staging == 1 ? env('PROPNEX_IP') : env('PROPNEX_IP_PROD');
$url = $host. '/propnex/index.php/domain/Ping_domain?domain='.urlencode($request->domain).'&host_ip='.$request->ip;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch,CURLOPT_HTTPHEADER,[
'Content-type: application/json'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch));
// dd($response);
//ERROR IS HERE IN IF STATEMENT
if(!is_null($response)){
if($response->status == 0){
$host = $request->staging == 1 ? env('PROPNEX_IP') : env('PROPNEX_IP_PROD');
$url = $host . '/propnex/index.php/pnapi/addDomain?type=own&domain='.$request->domain. '&site-id='. $request->siteid;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url );
curl_setopt($ch,CURLOPT_HTTPHEADER,[
'Authentication: '.$request->agentid . ':'. $request->auth
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = json_decode(curl_exec($ch));
curl_close($ch);
if($response->status == "ok"){
return redirect()->route('ping-domain-success',[
"fname" => $request->fname,
"lname" => $request->lname,
"agentid" => $request->agenatid,
"auth" => $request->auth,
"email" => $request->email,
"prtname" => $request->prtname,
"cea"=> $request->cea,
"type" => $request->type,
"staging"=> $request->staging,
"domain" => $request->domain,
'status' => true,
"ip" => $request->ip,
"siteid"=> $request->siteid,
"isRenew" => $request->isRenew
]);
}else{
return redirect()->route('ping-domain-fail',[
"fname" => $request->fname,
"lname" => $request->lname,
"agentid" => $request->agenatid,
"auth" => $request->auth,
"email" => $request->email,
"prtname" => $request->prtname,
"cea"=> $request->cea,
"type" => $request->type,
"staging"=> $request->staging,
"domain" => $request->domain,
'status' => true,
"ip" => $request->ip,
"siteid"=> $request->siteid,
"isRenew" => $request->isRenew
]);
}
}else{
return redirect()->route('ping-domain-fail',[
"fname" => $request->fname,
"lname" => $request->lname,
"agentid" => $request->agenatid,
"auth" => $request->auth,
"email" => $request->email,
"prtname" => $request->prtname,
"cea"=> $request->cea,
"type" => $request->type,
"staging"=> $request->staging,
"domain" => $request->domain,
'status' => true,
"ip" => $request->ip,
"siteid"=> $request->siteid,
"isRenew" => $request->isRenew
]);
}
}
else{
// DO what you want here when no data found in response;
}
}
推荐阅读
- pyspark - 使用 pyspark 动态编写镶木地板
- javascript - 在 es6 中重写 concat 函数
- postgresql - PostgreSQL:Mac OS 的数据库集群初始化失败
- sql-server - 只需读取访问权限即可有效地从大表中获取不同的值对
- python - 如何在python pandas中将字符串拆分为不同的列
- apache-spark - dataframe.coalesce(10).write 在 S3 中写入 1 个文件
- algorithm - 最小续航里程电动汽车需要经过每个城市
- java - 如何立即重新绘制/更新paintComponent?
- javascript - 在 API 响应中迭代并可能返回多个项目的正确方法是什么?
- c++ - 如何解决这个问题:“const char*”类型的参数与“char**”类型的参数不兼容