首页 > 解决方案 > 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
            ]);
        }
    }

标签: phplaravellaravel-5

解决方案


发生这种情况是因为您的响应中没有值,并且您正在尝试访问响应的属性,但该属性不存在。


你可以把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;
}


}

推荐阅读