Bug #85622

itemsProcFunc in TCA -> select with foreign_table works not correctly

Added by Julian Stelzer about 1 year ago. Updated 6 months ago.

Status:
New
Priority:
Must have
Assignee:
-
Category:
FormEngine aka TCEforms
Target version:
-
Start date:
2018-07-23
Due date:
% Done:

0%

TYPO3 Version:
9
PHP Version:
7.2
Tags:
Complexity:
Is Regression:
Sprint Focus:

Description

If you use itemProcFunc in e.g. a category field in your TCA, you have no access to items anymore. You just can add new list items but you can't hide items, which would be rendered or modify items.

'categories' => array(
            'exclude' => 0,
            'label' => 'Example',
            'config' => array(
                'type' => 'select',
                'renderType' => 'selectMultipleSideBySide',
                'foreign_table' => 'tx_example_domain_model_category',
                'MM' => 'tx_example_item_category_mm',
                'itemsProcFunc' => 'Vendor\\Example\\Utility\\TcaHelper->modifyCategorys',
                'size' => 10,
                'autoSizeMax' => 30,
                'minitems' => 1,
                'maxitems' => 9999,
                'multiple' => 0,
            ),
        ),

And some code stuff from the Custom Method

class TcaHelper {

    /**
     * @param $config
     * @param $pObj
     */
    public function modifyCategorys(array &$config, &$pObj) {

        \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump(array(
            '$config' => $config,
            '$pObj' => $pObj,
        ), __CLASS__ . '@' . __LINE__);

...

$config['items'] is empty regardless of the items in the other table.


Related issues

Related to TYPO3 Core - Bug #85142: Recent reordering of TCA select items processing makes it impossible to post-process foreign_table items Under Review 2018-06-02

History

#1 Updated by Wolfgang Klinger 8 months ago

  • Priority changed from Should have to Must have

I can confirm that,

            // Resolve "itemsProcFunc" 
            if (!empty($fieldConfig['config']['itemsProcFunc'])) {

is called too early

#2 Updated by André Schließer 6 months ago

I can also confirm that. After upgrade from TYPO3 8.7 to 9.5 I have the problem, that the foreign_table items are loaded after my itemsProcFunc overrides.

Why was the "Resolve itemsProcFunc"- block moved upwards in TYPO3 9.5?
TYPO3 8.7 https://github.com/TYPO3/TYPO3.CMS/blob/TYPO3_8-7/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectItems.php#L74
TYPO3 9.5 https://github.com/TYPO3/TYPO3.CMS/blob/9.5/typo3/sysext/backend/Classes/Form/FormDataProvider/TcaSelectItems.php#L48

It was changed here: https://forge.typo3.org/issues/75834

#3 Updated by Torben Hansen 6 months ago

  • Category set to FormEngine aka TCEforms

#4 Updated by Torben Hansen 6 months ago

Same problem here too. There is a pending patch on Gerrit (https://review.typo3.org/c/Packages/TYPO3.CMS/+/57185), which needs rebase and tests fixed.

#5 Updated by Torben Hansen 6 months ago

  • Related to Bug #85142: Recent reordering of TCA select items processing makes it impossible to post-process foreign_table items added

Also available in: Atom PDF