【问题标题】:TYPO3 - TCA in ext_tables.php check and TCA/Overrides for v8TYPO3 - ext_tables.php 中的 TCA 检查和 v8 的 TCA/覆盖
【发布时间】:2017-08-23 16:36:12
【问题描述】:

为 TYPO3 8LTS 更新了 ext_tables.php、TCA 和 TCA/覆盖?我将 TCA 定义从 ext_tables.php 移动到 /TCA 文件夹,列表视图中的查询再次起作用:

ext_tables.php

<?php
if (!defined('TYPO3_MODE')) {die('Access denied.');}

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    $_EXTKEY,
    'Code',
    'Description'
);

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addLLrefForTCAdescr('tx_code_domain_model_code', 'EXT:code/Resources/Private/Language/locallang_csh_tx_code_domain_model_code.xlf');
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::allowTableOnStandardPages('tx_code_domain_model_code');

配置/TCA/tx_code_domain_model_code.php

... // TCA defintions

配置/TCA/Overrides/tt_content.php

<?php
if (!defined('TYPO3_MODE')) {die('Access denied.');}

$_EXTKEY = 'code';

\TYPO3\CMS\Extbase\Utility\ExtensionUtility::registerPlugin(
    $_EXTKEY,
    'Code',
    'Description'
);

$extensionName = strtolower(\TYPO3\CMS\Core\Utility\GeneralUtility::underscoredToUpperCamelCase($_EXTKEY)); 
$pluginName = strtolower('Code'); 
$pluginSignature = $extensionName.'_'.$pluginName; 
$GLOBALS['TCA']['tt_content']['types']['list']['subtypes_addlist'][$pluginSignature] = 'pi_flexform'; 
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPiFlexFormValue($pluginSignature, 'FILE:EXT:'.$_EXTKEY . '/Configuration/FlexForms/flexform_code.xml'); 

配置/TCA/Overrides/tt_content.php

<?php
if (!defined('TYPO3_MODE')) {die('Access denied.');}

\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addStaticFile('code', 'Configuration/TypoScript', 'Description');

【问题讨论】:

    标签: typo3 typo3-extensions typo3-8.x


    【解决方案1】:

    不兼容。

    您应该在以下位置对 tx_code_domain_model_code 进行 TCA 定义: 配置/TCA/tx_code_domain_model_code.php

    静态模板定义在: 配置/TCA/Overrides/sys_template.php

    你的插件和 flexform 定义在:Configuration/TCA/Overrides/tt_content.php

    请注意 $_EXTKEY 变量未在这些文件中定义,因此您必须自己键入扩展密钥。

    【讨论】:

    • 用 call_user_func(function () { ... }); 包装你的代码看看extensions.typo3.org/extension/styleguide
    • @jokumer 虽然这是一种很好的做法,但您对这个解决方案有何意义?它不能解决不兼容的 ext_tables.php 或缺少 $_EXTKEY
    • 只是一个好习惯,在函数范围内而不是全局声明变量。见usetypo3.com/good-practices-in-extensions.html
    • @RIVATI:哪些是静态模板定义?我将 $GLOBALS['TCA']['tx_code_domain_model_code'] = array('ctrl' ... 移动到 Configuration/TCA/... 并且它再次工作。但是当我还将插件和 flexform 定义移动到: Configuration/TCA/Overrides/tt_content.php ...我收到上述错误...它需要是什么样子?
    • @PhilippM 静态文件定义是带有“addStaticFile”的行。就像我说的 $_EXTKEY 变量未在 Configuration/TCA 文件夹中定义,因此您必须用扩展密钥替换该变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    相关资源
    最近更新 更多