2016-11-30 2 views
1

У меня есть маркер в TCA. Я хочу заменить его на текущий UID.Как заменить маркер в TCA на itemsProcFunc?

код 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; 

    } 

Что я делаю неправильно?

ответ

4

Почему вы делаете это так сложно?

Посмотрите на TCAReference. Существует allready маркер ###THIS_UID###, который заменяется на uid текущего элемента. Таким образом, конфигурация может выглядеть следующим образом:

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

также посмотреть на описание: is current element uid (zero if new). Если ваш элемент новый, у вас нет uid.

+0

Thx для подсказки. Я вижу уже в документах, но я забыл. – test123456