如何用 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。
我在 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。