2017-02-26 85 views
1

TYPO3 Extbase渲染JSON - 未能通过typnumTYPO3 Extbase - 未能通过typnum

下一页渲染JSON列出/编辑/新/删除操作我试图呈现在J​​SON输出(这工作)。但没有值呈现。如果我做一个简单的...

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

它返回......

{"value":"001"} 

我缺少什么?

编辑:随着使用和引用同一仓库的工作:如果你注入并使用JsonRepository

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

你的'jsonReturn()'方法返回任何东西吗?我想'setVariablesToRender()'不期望一个数组,但我现在还不确定。我在这里写了一篇关于JSON视图的文章:https://usetypo3.com/json-view.html – Daniel

+0

我正在看它:-)我如何检查jsonReturn()是否返回任何内容?我试图转储(var_dump($结果);)它在JsonRepository.php中,并看着typnum ...但没有。我或多或少地遵循简单博客示例的教程,我的列表/编辑/新控制器看起来像它(有限制和搜索)https://github.com/maddy2101/simpleblog/blob/master/Classes/Controller/BlogController .php。所有的工作。关于setVariablesToRender()我只是遵循其他例子,如https://www.snip2code.com/Snippet/282519/TYPO3--Extbase--Simple-JsonView-usage。 –

+0

我玩了一会儿,得到以下错误:无法找到名称“Vendor \ Lei \ Domain \ Model \ Json”的类定义。这可能是由类定义中的类名错误拼写引起的。 –

回答

2

extbase exxts域名对象称为Json。如果您只想渲染现有的域对象作为其JSON表示,只需使用您在listAction()detailAction()中使用的相同存储库。

看一看我的例子:https://usetypo3.com/json-view.html

此外,return就像你在你的仓库后做一个调试将永远不会被执行。

+0

啊......谢谢你的提示。现在使用相同的存储库,它正在工作!我上面更新了!非常感谢! –