TCA Override 页面中的 Typo3 8.7 return GLOBAL be_user 值

Typo3 8.7 return a GLOBAL be_user value from a TCA Override page

我创建了一个名为“userval”的新后端变量。 我可以通过简单地调用在任何控制器中引用这个值:

$GLOBALS['BE_USER']->user['userval']

但是我需要通过 TCA/Overrides/tt_content.php 页面从另一个扩展中获取这个值。上面的代码在这里不起作用(我收到一个空值)。是否可以从 tt_content.php 访问 BE_USER 值?

更新 - 我没能弄清楚,但我找到了一个可能对其他人有用的更好的解决方案。

我需要此信息,因为我想 return 来自链接到字段“userval”的 table 的项目列表。但是下面的例子已经被简化以用于更一般的用途..

我发现 tt_content.php 可以通过控制器将数据直接传递给它。在 tt_content.php 文件中,添加以下内容:

'tx_some_example' =>
 array(
   'config' =>
   array(
     'type' => 'select',
     'renderType' => 'selectSingle',
     'items' => array (),      
     'itemsProcFunc' => 'SomeDomain\SomeExtensionName\Controller\ExampleController->getItems',
     'selicon_cols' => 8,
     'size' => 1,
     'minitems' => 0,
     'maxitems' => 1,       
   ),
   'exclude' => '1',
   'label' => 'Some example',

),

...请注意“itemsProcFunc”行。这引用了来自 ExampleController 的 returned 数据。

在 ExampleController 中,以下是将数据发送到 tt_content.php 的方法:

public function getItems($config){         
        
     //Sample data - this could be a DB call, a list in a folder, or a simple array like this
     $sampleArray[
        "id1" => "ID 1 Label",            
        "id2" => "ID 2 Label",            
        "id3" => "ID 3 Label",
     ];  
      
     $optionList = [];
     $count=0;


     //Cycle through each item, and add it to the desired dropdown list
     foreach ($sampleArray as $id => $label) {
          $optionList[$count] = [0 => $label, 1 => $id];
          $count++;
     }

     //Pass the data back to the tt_content.php page
     $config['items'] = array_merge($config['items'], $optionList);
     return $config;

}