如何为TYPO3 cart产品的fe variant扩展新增自定义字段
解决方法
1. 修正Extbase持久化映射
你当前的配置仅声明了自定义模型对应的数据表,未告知Extbase需要用你的子类替换原cart扩展的FeVariant类,按版本对应修改配置:
- TYPO3 11+版本:修改
myext/Configuration/Extbase/Persistence/Classes.php
<?php declare(strict_types=1); return [ \Extcode\CartProducts\Domain\Model\Product\FeVariant::class => [ 'subclasses' => [ \Vendor\myext\Domain\Model\Product\FeVariant::class, ], ], \Vendor\myext\Domain\Model\Product\FeVariant::class => [ 'tableName' => 'tx_cartproducts_domain_model_product_fevariant', ], ];
- TYPO3 10.x及更早版本:在扩展的
ext_typoscript_setup.typoscript中添加配置
config.tx_extbase.persistence.classes { Extcode\CartProducts\Domain\Model\Product\FeVariant { subclasses { Vendor\myext\Domain\Model\Product\FeVariant = Vendor\myext\Domain\Model\Product\FeVariant } } Vendor\myext\Domain\Model\Product\FeVariant { mapping.tableName = tx_cartproducts_domain_model_product_fevariant } }
2. 调整扩展加载优先级
在你扩展的ext_emconf.php中添加cart_products依赖,确保你的扩展晚于cart_products加载,避免映射规则被覆盖:
$EM_CONF[$_EXTKEY] = [ // 其余原有配置保持不变 'constraints' => [ 'depends' => [ 'typo3' => '你的站点TYPO3版本范围,例如11.5.0-11.5.99', 'cart_products' => '对应cart_products扩展的版本范围', ], ], ];
3. 清理系统缓存
进入TYPO3后台清理全部系统缓存,包括DI容器缓存、持久化映射缓存,开发环境可直接删除项目根目录下var/cache文件夹内所有内容。
配置生效后,前端模板中直接通过{feVariant.note}即可获取到字段值。
内容的提问来源于stack exchange,提问作者Geee
相关产品推荐
相关产品推荐

