【问题标题】:Typo3 extbase json outputTypo3 extbase json 输出
【发布时间】:2015-01-13 15:37:32
【问题描述】:

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

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

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
}

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

/**
 * 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行。

-empty-
-empty-
-empty-
-empty-
"001"

我不知道为什么......

【问题讨论】:

    标签: ajax json typo3 fluid extbase


    【解决方案1】:

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

    public function testAction() {
        $data = array('value'=>'001');
        return json_encode($data);
    }
    

    当然你应该设置Content-type: application/json - 你喜欢哪里 - 在你的 TS 中或直接在返回之前的动作中;

    其他线索:可能这是由 tt_content 引起的(只是猜测),对于 JSON 操作,最好直接通过 Bootstrap 包含它们,首先在您的 @ 中注册新的 FE 插件987654324@:

    \TYPO3\CMS\Extbase\Utility\ExtensionUtility::configurePlugin(
        'VENDORNAME.' . $_EXTKEY,
        'JsonDataPlugin',
        array('JSON' => 'test',),
        array('JSON' => 'test',)
    );
    

    并修改你的 TS:

    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改成自己的,还要清除系统缓存)

    最后:检查所有文件并确保&lt;?php 之前和?&gt; 之后没有空行(最好的选择是从每个文件中删除?&gt; - 然后让PHP在文件末尾终止脚本)。如other naswer 中所述,它也可以在TYPO3 的源中修复。

    【讨论】:

    • 坦克,但我已经尝试过这个并且遇到了同样的问题......我不知道为什么我为此使用视图,如果你有更好的方法,我是typo3的新手,告诉我。 :)
    • 做了这个,但还是同样的问题
    • 那么普通页面呢?它也有空行吗?对吗?
    • 不,"" 是源代码的第一行
    • 如果我在没有 &type=999 的情况下调用控制器,源代码中会再次出现四个空行。
    【解决方案2】:

    好的,我明白了……

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

    /**
     * User service
     *
     * @var \Whmcs\Registration\Service\User
     * @inject
     */
    protected $user = NULL;
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2013-08-26
      • 1970-01-01
      相关资源
      最近更新 更多