TYPO3 v11.5 #1578950324 RuntimeException -给定的页面记录无效.失踪的uid.B



升级到TYPO3 v11.5后,我在扩展后端模块中得到以下错误:

1578950324 RuntimeException

给定的页面记录无效。失踪的uid。

所以我深入挖掘了一下,发现这与使用f:be.tableListViewHelper有关。

在我的BE模块中,我使用ViewHelper这样:

<f:be.tableList
tableName="tx_myext_domain_model_mymodel"
storagePid="1"
fieldList="{0: 'column1', 1: 'column_2'}"
sortField="column1"
enableControlPanels="true"
clickTitleMode="edit" />

由于我将后端模块注册为'navigationComponentId' => '',(如文档中提到的),我得到了此错误。但是页面树或其他东西在这一点上没有帮助,所以我不想展示它们。

(如果我用'navigationComponentId' => 'TYPO3/CMS/Backend/PageTree/PageTreeElement'显示页面树,此错误消失)

原来ViewHelper通过检查PID是否在mountPoint中来检查用户是否具有访问权限。我认为这很重要,而不是一个bug。修复这个问题可能很困难,因为如果我不知道PID,如何检查mountPoint权限。(可能在ViewHelper:检查storagePid?)

但是如果你禁用了页面树,就没有PID来检查了。

所以我也发现,当前的PID被获取,而TYPO3CMSCoreUtilityGeneralUtility查找给定的id如下:

$value = $_POST[$var] ?? $_GET[$var] ?? null;

我没有找到在Extbase控制器中设置pid的方法,所以我在我的listAction中轻松地这样做了:

if( TYPO3_MODE == 'BE' ) {
// if is in the BE-module, set PID to prevent customer authentication check error
$_POST['id'] = 1;
}

(在本例中,我将PID设置为我的根页)

如果有人有更好的解决方案,不要犹豫,把它贴在这个问题上。

是否禁用了后端模块的页面树?如果是,那就是问题所在!设置inheritNavigationComponentFromMainModule => false导致错误。

相关内容

  • 没有找到相关文章

最新更新