Расширение таблицы страниц полем с помощью itemsProcFunc в TYPO3 6.2

Я пытаюсь расширить форму свойств страницы путем расширения таблицы БД страницы и массива TCA изнутри расширения. Это работает, за исключением того, что моя пользовательская функция не будет вызываться. Если я заменю свою собственную строку itemsProcFunc на строку ядра функции TYPO3 itemsProcFunc, она будет работать, но с моей собственной функцией она никогда не будет работать (я просто получаю пустой результат / список выбора, даже когда я просто возвращаю фиктивный массив: «return array (‘title », ‘1’);» ….

Вот мой код в ext_tables.php моего расширения:

<?php

$TCA['pages']['columns'] += array(
'targetelement' => array(
'exclude' => 0,
'label' => 'Target element (first select a target page!)',
'config' => array (
'type' => 'select',
'items' => Array (
Array('',0),
),
'size' => 1,
'minitems' => 1,
'maxitems' => 1,
//'itemsProcFunc' => 'TYPO3\CMS\Backend\View\BackendLayoutView->addBackendLayoutItems',
'itemsProcFunc' => 'Vendor\Myextension\Controller\Hooks\CustomTargetElementSelector->getContentElements',
),
)
);

t3lib_extMgm::addToAllTCAtypes('pages', 'targetelement,', '2', 'after:nav_title');
t3lib_extMgm::addToAllTCAtypes('pages', 'targetelement', '1,5,4,199,254', 'after:title');

Постскриптум Я, конечно, заменяю Vendor \ Myextension для своего собственного пространства имен.

Я не знаю, куда точно поместить мой функциональный файл, я предполагаю в расширении \ Classes \ Controllers \ Hooks \ CustomTargetElementSelector.php.

Моя конечная цель — отобразить список элементов содержимого выбранного UID ярлыка на странице.

P.s.2 мой файл CustomTargetElementSelect.php выглядит следующим образом (содержимое просто возвращает один элемент, результат фиктивного списка:

<?php

namespace Vendor\Myextension\Controller;

class CustomTargetElementsSelector extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController {

public function getContentElements(array &$params,$pObj){

return array('title','uid');

}
}

1

Решение

Прежде всего, itemsProcFunc должен быть простым классом; Я никогда не проверял, доступен ли контекст контроллера Extbase в itemsProcFunc.

Ваш хук должен (это просто рекомендация) находиться в

yourext/Classes/Hook/CustomTargetElementSelector.php

Пространство имен:

namespace Vendor\Yourext\Hook;

class CustomTargetElementSelector {

[method inside]

}

После очистки системного кэша, если хук по-прежнему не работает, установите die() Оператор внутри функции, чтобы узнать, вызывается ли функция вообще. В настоящее время это не может работать, потому что местоположение вашего класса (Controllers / Hooks) и пространства имен (Controller) не подходят.

Ради полной совместимости с 6.2 / 7 замените

t3lib_extMgm::

от

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]