TYPO3 8.7:使用新字段扩展sys_category

时间:2018-03-06 16:26:37

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

我只是尝试使用新字段" page"扩展sys_category表。只是正常的extbase方式。像魅力一样工作,字段显示并保存在数据库中。但是我的f中没有字段:在Fluid中调试。任何人都知道缺少什么?

非常感谢您的帮助!

TCA覆盖:

$newColumns = [
  'page' => [
    'exclude' => true,
    'label' => 'LLL:EXT:project/Resources/Private/Language/Default/locallang_db.xlf:sys_category.page',
    'config' => [
      'type' => 'group',
      'internal_type' => 'db',
      'allowed' => 'pages',
      'size' => 1,
      'maxitems' => 1,
      'minitems' => 0
    ]
  ],
];


\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('sys_category', $newColumns);

// Make fields visible in the TCEforms:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
  'sys_category', // Table name
  'page', // Field list to add
  '1', // List of specific types to add the field list to. (If empty, all type entries are affected)
  'after:title' // Insert fields before (default) or after one, or replace a field
);

SQL:

#
# Table structure for table 'sys_category'
#
CREATE TABLE sys_category (
  page int(11),
);

型号:

<?php
namespace <Vendorname>\Project\Domain\Model;

use TYPO3\CMS\Extbase\Utility\DebuggerUtility;

/**
 * Class Category
 * @package <Vendorname>\Project
 */

class Category extends \TYPO3\CMS\Extbase\Domain\Model\Category
{
    /**
     * @var integer
     */
    protected $page = null;


    /**
     * Gets the page.
     *
     * @return integer
     * @api
     */
    public function getPage()
    {
        return $this->page;
    }

    /**
     * Sets the page.
     *
     * @param integer $page
     * @api
     */
    public function setPage($page)
    {
        $this->page = $page;
    }

}

Typoscript Setup:

config.tx_extbase.persistence {
    storagePid = {$plugin.tx_project.persistence.storagePid}
    classes {
        TYPO3\CMS\Extbase\Domain\Model\Category {
            subclasses {
                <Vendorname>\Project\Domain\Model\Category = <Vendorname>\Project\Domain\Model\Category
            }
        }

        <Vendorname>\Project\Domain\Model\Category {
            mapping {
                tableName = sys_category
            }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我不确定是否可以继承TYPO3的sys_category表。

如果您始终希望{strong>所有查询到TYPO3\CMS\Extbase\Domain\Repository\CategoryRepository将返回自定义类型的对象,则可以配置ext_typoscript_setup,如下所示

config.tx_extbase{
    objects {
        TYPO3\CMS\Extbase\Domain\Model\Category.className = <vendor>\Project\Domain\Model\Category
    }
    persistence.classes {
        <vendor>\Project\Domain\Model\Category {
            mapping {
                tableName = sys_category
            }
        }
    }
}

请注意,这不包括其他TYPO3扩展程序在sys_category表格中的任何其他扩展程序。

但是,如果您只需要扩展中的扩展Category对象而不是TYPO3中的全局对象,则可以在扩展名中创建自己的CategoryRepository,如ext:news