2014-12-04 46 views
1

我試圖通過從擴展內擴展頁面數據庫表和TCA數組來擴展'頁面'屬性表單。這有效,除了我的自定義函數不會被調用。如果我用TYPO3核心函數itemsProcFunc行替換我自己的itemsProcFunc行,它可以工作,但是用我自己的函數它永遠不會工作(我只是得到一個空的結果/選擇列表,即使當我簡單地返回一個虛擬數組時:「return array('title 」, '1');」 ......在字段中使用itemsProcFunc在TYPO3中擴展頁表6.2

這是我在我的分機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'); 

詩我更換供應商\ Myextension我自己當然命名空間

。我不知道在哪裏放置我的函數文件,我假設在擴展\ Classes \ Controllers \ Hooks \ CustomTargetElementSelector.php。

我的最終目標是要顯示選定的快捷方式頁面UID的內容元素的列表..

Ps2的我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

首先,itemsProcFunc應該是一個簡單的類;我從來沒有測試過在itemProcFunc中是否有Extbase控制器上下文。

你的鉤子應該(這只是一個推薦)位於

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::