使用TYPO3 6.2中的itemsProcFunc扩展包含字段的页表

时间:2014-12-04 11:45:12

标签: php typo3 typo3-6.2.x

我试图扩展“'页面'通过从扩展中扩展页面db表和TCA数组来形成属性。这是有效的,除了我的自定义函数不会被调用。如果我用TYPO3核心函数itemsProcFunc行替换我自己的itemsProcFunc行它可以工作,但是我自己的函数它永远不会工作(我只是得到一个空的结果/选择列表,即使我只是返回一个虚拟数组:"返回数组('标题',' 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');

P.S。我当然用我自己的命名空间替换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 个答案:

答案 0 :(得分:0)

首先,itemsProcFunc应该是一个简单的类;我从未测试过如何在itemsProcFunc中使用Extbase控制器上下文。

你的钩子应该(这只是一个建议)驻留在

yourext/Classes/Hook/CustomTargetElementSelector.php

命名空间:

namespace Vendor\Yourext\Hook;

class CustomTargetElementSelector {

   [method inside]

}

刷新系统缓存后,如果挂钩仍然没有功能,请在函数中设置die()语句,以查明该函数是否完全被调用。目前它无法工作,因为您的类(控制器/挂钩)和命名空间(控制器)的位置不适合。

为了完全兼容6.2 / 7,请替换

t3lib_extMgm::

通过

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