我只是尝试使用新字段" 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
}
}
}
}
答案 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