2017-02-26 2 views
1

TYPO3 Extbase zu machen - Failing json über typnumTYPO3 Extbase - Failing json über typnum

Weiter machen zur Liste/Bearbeiten/Neu/entfernen Aktion (die Arbeit) Ich habe versucht, die Ausgabe in json zu machen. Aber keine Werte rendern. Wenn ich eine einfache tun ...

$data = array('value'=>'001'); 
return json_encode($data); 

Es zurückkehrt ...

{"value":"001"} 

Was bin ich?

Edit: mit der Verwendung und verweist auf demselben Repository seine Arbeits:

JSONController.php

<?php 
namespace Vendor\Lei\Controller; 
use Vendor\Lei\Domain\Model\Lei; 

/** 
* JSONController 
*/ 
class JSONController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController { 

/** 
* leiRepository 
* 
* @var \Vendor\Lei\Domain\Repository\LeiRepository 
* @inject 
*/ 
protected $leiRepository; 

/** 
* @var string 
*/ 
protected $defaultViewObjectName = 'TYPO3\CMS\Extbase\Mvc\View\JsonView'; 

/** 
* action jsonRequest 
* 
* @return void 
*/ 
public function jsonRequestAction() { 

    //$data = array('value'=>'001'); 
    //return json_encode($data); 

    $this->view->setVariablesToRender(array('records')); 
    $this->view->assign('records', $this->leiRepository->jsonRequest()); 

}   

} 

LeiRepository.php

<?php 
namespace Vendor\Lei\Domain\Repository; 
use TYPO3\CMS\Extbase\Persistence\QueryInterface; 

class LeiRepository extends \TYPO3\CMS\Extbase\Persistence\Repository { 

... 

public function jsonRequest() { 

    $query = $this->createQuery(); 
    $result = $query->setLimit(100)->execute(); 
    return $result; 

} 

} 
+0

Gibt Ihre 'jsonReturn()' Methode irgendetwas zurück? Und ich denke 'setVariablesToRender()' erwartet kein Array, aber ich bin mir jetzt nicht sicher. Ich habe einen Artikel über die JSON-Ansicht hier geschrieben: https://usetypo3.com/json-view.html – Daniel

+0

Ich habe es angeschaut :-) Wie kann ich überprüfen, ob jsonReturn() irgendetwas zurückgibt? Ich habe versucht, dump (var_dump ($ result);) es in der JsonRepository.php und schaute auf die typnum ... aber nichts da. Ich folgte mehr oder weniger dem Tutorial des Simple Blog Beispiel und mein List/Edit/New Controller sieht so aus (mit Limit und Suche) https://github.com/maddy2101/simpleblog/blob/master/Classes/Controller/BlogController .php. Alles funktioniert. Bezüglich der setVariablesToRender() habe ich einfach andere Beispiele wie https://www.snip2code.com/Snippet/282519/TYPO3--Extbase--Simple-JsonView-usage verfolgt. –

+0

Ich spielte ein wenig mehr herum und erhalte den folgenden Fehler: Die Klassendefinition für den Namen "Hersteller \ Lei \ Domain \ Model \ Json" konnte nicht gefunden werden. Dies könnte durch eine falsche Schreibweise des Klassennamens in der Klassendefinition verursacht werden. –

Antwort

2

Wenn Sie eine JsonRepository injizieren und verwenden extbase erwartet ein Domänenobjekt namens Json. Wenn Sie nur bereits vorhandene Domänenobjekte als JSON-Darstellung darstellen möchten, verwenden Sie einfach die gleichen Repositories, die Sie in Ihren listAction() und detailAction() verwendet haben.

Werfen Sie einen Blick auf mein Beispiel: https://usetypo3.com/json-view.html

Auch ein Debug nach dem return wie Sie in Ihrem Repository haben nie ausgeführt werden.

+0

Ahh ... danke für den Hinweis. Mit dem gleichen Repository funktioniert es jetzt! Ich habe oben aktualisiert! Danke vielmals! –

Verwandte Themen