Ich versuche, ein Objekt von meinen Laravel API-Routen zurückzugeben, aber alles, was zurückgegeben wird, ist ein leeres Array.Laravel API gibt nur leere Objekte zurück
Mein Modell sieht wie folgt aus:
class MobilePageStats extends Model
{
//
private $score;
private $mobileFriendly;
private $numberRobotedResources;
private $numberTransientFetchFailureResources;
private $transientFetchFailureUrls;
private $cms;
private $ruleResults;
/**
* MobilePageStats constructor.
* @param int $score
* @param bool $mobileFriendly
* @param int $numberRobotedResources
* @param int $numberTransientFetchFailureResources
* @param array $transientFetchFailureUrls
* @param string $cms
* @param array $ruleResults
*/
public function __construct(
$score,
$mobileFriendly,
$numberRobotedResources,
$numberTransientFetchFailureResources,
$transientFetchFailureUrls,
$cms,
$ruleResults
) {
$this->score = $score;
$this->mobileFriendly = $mobileFriendly;
$this->numberRobotedResources = $numberRobotedResources;
$this->numberTransientFetchFailureResources = $numberTransientFetchFailureResources;
$this->transientFetchFailureUrls = $transientFetchFailureUrls;
$this->cms = $cms;
$this->ruleResults = $ruleResults;
}
Und ich habe auch Getter auf alles.
Ich habe alle Daten in meinem Controller mit Konstruktor in dieser Funktion:
public function getData() {
$cms = "";
$score = $this->data->ruleGroups->USABILITY->score;
$mobileFriendly = $this->data->ruleGroups->USABILITY->pass;
if(isset($this->data->pageStats->numberRobotedResources)){
$numberRobotedResources = $this->data->pageStats->numberRobotedResources;
}else{
$numberRobotedResources = '';
}
if(isset($this->data->pageStats->numberTransientFetchFailureResources)){
$numberTransientFetchFailureResources = $this->data->pageStats->numberTransientFetchFailureResources;
}else{
$numberTransientFetchFailureResources = '';
}
if(isset($this->data->pageStats->transientFetchFailureUrls)){
$transientFetchFailureUrls = $this->data->pageStats->transientFetchFailureUrls;
}else{
$transientFetchFailureUrls = '';
}
if(isset($this->data->pageStats->cms)){
$cms = $this->data->pageStats->cms;
if($cms != 'WORDPRESS' && $cms != 'JOOMLA'){
$cms = $this->checkCMS();
}
}
$cvp = $this->getConfigureViewport();
$fontSizes = $this->getUseLegibleFontSizes();
$avoidPlugins = $this->getAvoidPlugins();
$sizeToViewport = $this->getSizeContentToViewport();
$tapTargets = $this->getSizeTapTargetsAppropriately();
$ruleResults = [$cvp, $fontSizes, $avoidPlugins, $sizeToViewport, $tapTargets];
$mobilePageStats = new MobilePageStats($score, $mobileFriendly, $numberRobotedResources,
$numberTransientFetchFailureResources, $transientFetchFailureUrls, $cms, $ruleResults);
return $mobilePageStats;
}
In meinem API Routen ich dann versuchen, das Modell wie folgt zurück:
Route::get('/mobilePageSpeed', function(Request $request){
$data = new PageSpeedMobileController($request->url);
return response($data->getData());
});
Aber alle Ich bekomme zurück, wenn ich die Anfrage mache:
<body>
<pre style="word-wrap: break-word; white-space: pre-wrap;">[]</pre>
</body>
Warum wird das Objekt nicht zurückgegeben? Ich weiß, dass es Daten enthält, weil ich es ausdrucken kann. Aber kann es nicht senden?
Ich habe beide versucht repsonne() -> json ($ data-> getData()); Und json_encode ($ data-> getData()), aber sie geben mir das gleiche Ergebnis? Ich kann einfach keine Lösung finden, die funktioniert.
Wie also gebe ich Objekte von Laravel Api zurück?
Schön, das hat den Trick gemacht !! Aber ich musste es immer noch als Antwort zurückgeben – user2926430