You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TYPO3 8.7:扩展sys_category添加新字段后Fluid调试无此字段

嘿,我来帮你搞定这个问题!你已经完成了后台字段的添加和数据库存储,但Extbase要在Fluid的f:debug里显示自定义字段,还差几个关键配置步骤,我给你拆解清楚:

1. Model层的关键配置(最容易遗漏)

你应该已经创建了继承系统核心Category的自定义Model,但要确保做了这两点:

  • 添加属性与ORM注解:明确把数据库字段映射到Model属性,比如:
namespace YourVendor\YourExtension\Domain\Model;

use TYPO3\CMS\Extbase\Domain\Model\Category as CoreCategory;
use Doctrine\ORM\Mapping as ORM;

class Category extends CoreCategory
{
    /**
     * 关联的页面ID
     * @var int|null
     * @ORM\Column(name="page", type="integer", nullable=true)
     */
    protected ?int $page = null;

    /**
     * @return int|null
     */
    public function getPage(): ?int
    {
        return $this->page;
    }

    /**
     * @param int|null $page
     */
    public function setPage(?int $page): void
    {
        $this->page = $page;
    }
}
  • 注册自定义Model替换核心类:在ext_localconf.php里告诉Extbase用你的Model替代系统默认的Category:
// 注册子类映射
$GLOBALS['TYPO3_CONF_VARS']['EXT']['extbase']['persistence']['classes'][
    \TYPO3\CMS\Extbase\Domain\Model\Category::class
] = [
    'subclasses' => [
        \YourVendor\YourExtension\Domain\Model\Category::class
    ]
];

// 注册实现类
\TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(\TYPO3\CMS\Extbase\Object\Container\Container::class)
    ->registerImplementation(
        \TYPO3\CMS\Extbase\Domain\Model\Category::class,
        \YourVendor\YourExtension\Domain\Model\Category::class
    );

2. Typoscript的字段映射配置

这一步是很多人忽略的!你需要在扩展的setup.typoscript里配置Extbase的持久化映射,让它知道数据库的page字段对应Model的page属性:

config.tx_extbase.persistence.classes {
    TYPO3\CMS\Extbase\Domain\Model\Category {
        mapping {
            columns {
                page.mapOnProperty = page
            }
        }
    }
}

如果是用自定义Model直接映射,也可以写:

config.tx_extbase.persistence.classes {
    YourVendor\YourExtension\Domain\Model\Category {
        mapping {
            tableName = sys_category
            columns {
                page.mapOnProperty = page
            }
        }
    }
}

3. 最后一步:强制清理缓存

TYPO3的Extbase和Doctrine会缓存Model映射信息,所以一定要清空所有缓存,尤其是「Doctrine ORM缓存」和「Extbase Object Cache」,否则新配置不会生效。

额外检查:TCA的小细节

虽然你已经能在后台看到并保存字段,但可以确认下TCA的columns定义里,字段的config没有设置exclude = 1却没在TS里配置权限(不过一般后台能保存就没问题),另外确保字段已经加到了showitem里让后台显示。

做完这些步骤后,再用f:debug查看Category对象,就能看到page字段啦!

内容的提问来源于stack exchange,提问作者swiener

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:12:48