You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 12:如何将TypoScript常量设置为整数类型?

TYPO3 v12升级:解决PageType参数类型不匹配问题

问题场景与错误

把TYPO3从v11升级到v12后,Fluid模板里的AJAX筛选表单报错:

TYPO3\CMS\Extbase\Mvc\Web\Routing\UriBuilder::setTargetPageType(): Argument #1 ($targetPageType) must be of type int, string given

问题出在定义的AJAX页面类型常量,传递到Fluid时是字符串类型,但TYPO3 v12要求pageType必须是整数。

相关代码

Fluid模板代码

<f:form action="list" method="GET" name="overwriteDemand" pageType="{settings.tx_t8_references_ajaxpage}">

TypoScript常量

plugin.tx_t8references {
    ajaxPage = 427592
}

TypoScript配置

plugin.tx_t8references {
    settings {
        tx_t8_references_ajaxpage = {$plugin.tx_t8references.ajaxPage}
    }
}

解决办法

1. 在TypoScript配置中强制转整数

直接在配置里把常量值转为整数,这样传递到Fluid时就是int类型:

plugin.tx_t8references {
    settings {
        tx_t8_references_ajaxpage = INT
        tx_t8_references_ajaxpage.value = {$plugin.tx_t8references.ajaxPage}
    }
}

或者用更简洁的写法:

plugin.tx_t8references.settings.tx_t8_references_ajaxpage = intval({$plugin.tx_t8references.ajaxPage})

2. 在Fluid模板中直接转换类型

如果不想改TypoScript,也可以在模板里直接转类型:

<!-- 方式1:用intval转换 -->
<f:form action="list" method="GET" name="overwriteDemand" pageType="{(int)settings.tx_t8_references_ajaxpage}">

<!-- 方式2:用format.number过滤器去除格式(确保无分隔符) -->
<f:form action="list" method="GET" name="overwriteDemand" pageType="{settings.tx_t8_references_ajaxpage -> f:format.number(decimalSeparator: '', thousandsSeparator: '')}">

3. 在控制器代码中处理

如果是在Extbase控制器里生成URL,也可以在代码里转类型后再传给UriBuilder:

$pageType = (int)$this->settings['tx_t8_references_ajaxpage'];
$uri = $this->uriBuilder->setTargetPageType($pageType)->build();

内容的提问来源于stack exchange,提问作者Paradonix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 23:22:14