我试图扩展“'页面'通过从扩展中扩展页面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');
}
}
答案 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::