如何用 itemsProcFunc 替换 TCA 中的标记?

How to replace marker in TCA with itemsProcFunc?

我在 TCA 中有一个标记,我想用当前的 UID 替换它。

像这样的TCA代码

'foreign_table' => 'pages',
                'foreign_table_where' => 'AND groups = ###UID###',
                'foreign_sortby' => 'sorting',
                'itemsProcFunc' => 'Vendor\extkey\Utility\GeneralUtility->render',

我的渲染函数是这样的:

/**
     *
     * @param array $PA
     * @param \TYPO3\CMS\Backend\Form\FormEngine $pObj
     * @return string
     */
    public function render(array &$PA, $pObj) {
        $uid = $PA['row']['uid'];
        $PA['config']['foreign_table_where'] = str_replace('###UID###', $uid, $PA['config']['foreign_table_where']);
        return $PA;

    }

我做错了什么?

你为什么要这么复杂?

看看TCAReference。已经有一个标记 ###THIS_UID### 被当前元素的 uid 替换。所以你的配置可以是这样的:

'foreign_table' => 'pages',
'foreign_table_where' => 'AND groups = ###THIS_UID###',
'foreign_sortby' => 'sorting',

另请查看说明:is current element uid (zero if new)。如果您的元素是新元素,则您没有任何 uid。