首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Typo3扩展基json输出

Typo3扩展基json输出
EN

Stack Overflow用户
提问于 2015-01-13 15:37:32
回答 2查看 7.9K关注 0票数 1

我尝试创建处理ajax请求的控制器。

我发现,我必须将此添加到TS配置中:

代码语言:javascript
复制
ajaxCall = PAGE
ajaxCall {
    typeNum = 999
    config.disableAllHeaderCode = 1
    config.metaCharset = UTF-8
    xhtml_cleaning = 0
    admPanel = 0
    10 = COA
    10 < tt_content.list.20.registration_userregistration
}

我的控制器看起来是这样的:

代码语言:javascript
复制
/**
 * JSONController
 */
class JSONController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

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

    /**
     * action test
     *
     * @return string
     */
    public function testAction() {
        $this->view->assign('value', "001");
    }
}

这很有效,我得到了一个空白页,上面写着"001“。但是如果我看一下源代码,有4行空行,"001“在第5行。

代码语言:javascript
复制
-empty-
-empty-
-empty-
-empty-
"001"

我不知道为什么..。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-14 07:42:02

好吧,我知道了.

我包含了一个文件,其中包含了一些名为user.php的函数

代码语言:javascript
复制
/**
 * User service
 *
 * @var \Whmcs\Registration\Service\User
 * @inject
 */
protected $user = NULL;

在这个文件中,?>标记后面有空行。这些空空如也是问题所在。我删除了它们,现在一切都很好。:)

票数 3
EN

Stack Overflow用户

发布于 2015-01-13 16:14:42

我不明白,你为什么要用视图来渲染JSON?

代码语言:javascript
复制
public function testAction() {
    $data = array('value'=>'001');
    return json_encode($data);
}

当然,您应该在您的TS中设置Content-type: application/json (您喜欢在哪里),或者在返回之前直接在操作中设置;

其他提示:可能是由tt_content (只是猜测)引起的,对于JSON操作,最好通过Bootstrap直接包含它们,首先在ext_localconf.php中注册新的FE插件

代码语言:javascript
复制
\TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
    'VENDORNAME.' . $_EXTKEY,
    'JsonDataPlugin',
    array('JSON' => 'test',),
    array('JSON' => 'test',)
);

并修改您的TS:

代码语言:javascript
复制
myAjaxPage = PAGE
myAjaxPage {

  typeNum = 999
  10 = USER
  10 {
    userFunc = TYPO3\CMS\Extbase\Core\Bootstrap->run
    extensionName = Yourextname
    pluginName = JsonDataPlugin
    vendorName = VENDORNAME
  }

  config {
    disableAllHeaderCode = 1
    additionalHeaders = Content-type:application/json
    xhtml_cleaning = 0
    admPanel = 0
    debug = 0
    no_cache = 1
  }

}

(不要忘记为自己更改Yourextname和VENDORNAME,也要清除系统缓存)

最后:检查所有文件,并确保在<?php之前和?>之后没有空行(最好的选择是从每个文件中删除?>,并让PHP在文件结束时终止脚本)。此外,它也可以固定在TYPO3的源中,如other naswer中所描述的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27925797

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档