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;
}
我创建了一个名为“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;
}