Shopware 6.6版本升级指南与技术解析

Shopware 6.6版本升级指南与技术解析

shopware Shopware 6 is an open commerce platform based on Symfony Framework and Vue and supported by a worldwide community and more than 1.500 community extensions shopware 项目地址: https://gitcode.com/gh_mirrors/sh/shopware

版本6.6.10.1修复内容

商业插件更新时的服务异常修复

在升级到6.6.10.0版本时,如果商业插件处于激活状态但未更新,会导致ServiceNotFoundException异常抛出。开发团队通过添加旧服务的别名来解决这个问题,确保在更新过程中商业插件能够正常运行。

Messenger中间件编译优化

MessengerMiddlewareCompilerPass现在能够更好地处理中间件尚未定义的情况,这一改进确保了中间件能够正确地在应用中被注册。

版本6.6.10.0重要变更

实体扩展接口变更

EntityExtension::getDefinitionClass方法已被标记为废弃,因为基于PHP属性的自定义实体不再需要定义类。开发者应迁移到新的EntityExtension::getEntityName方法,直接返回实体名称即可。

迁移示例:

// 旧方式
public function getDefinitionClass(): string {
    return ProductDefinition::class;
}

// 新方式
public function getEntityName(): string {
    return ProductDefinition::ENTITY_NAME;
}

批量实体扩展功能

新增的BulkEntityExtension类允许在一个类中为多个实体定义字段,减少了为每个实体创建单独类的开销。

使用示例:

class MyEntityExtension extends BulkEntityExtension {
    public function collect(): \Generator {
        yield ProductDefinition::ENTITY_NAME => [
            new FkField('follow_up_id', 'followUp', ProductDefinition::class),
            new ManyToOneAssociationField('followUp', 'follow_up_id', ProductDefinition::class, 'id')
        ];
    }
}

外部URL媒体存储

现在可以通过管理API将媒体路径存储为外部URL,这为媒体管理提供了更大的灵活性,无需在服务器上存储物理文件。

API请求示例:

{
    "id": "01934e0015bd7174b35838bbb30dc927",
    "mediaFolderId": "01934ebfc0da735d841f38e8e54fda09",
    "path": "https://test.com/photo/2024/11/30/sunflowers.jpg",
    "fileName": "sunflower",
    "mimeType": "image/jpeg"
}

前端技术改进

地址编辑器重构

旧的地址编辑器插件和模板已被废弃,开发者应迁移到新的address-manager系列组件:

  • 替换address-editor.plugin.jsaddress-manager.plugin.js
  • 更新相关模板文件到对应的新版本

新增地址搜索插件

新增了address-search.plugin.js插件,用于在新的模态框和地址账户页面中搜索客户地址。

表单可访问性改进

对前端表单处理进行了全面改造,实现了以下最佳实践:

  1. 移除了原生浏览器验证,改用自定义验证
  2. 优化了必填字段标记方式
  3. 实现了即时字段验证反馈
  4. 改进了错误提示和视觉反馈

新表单验证服务:

<form data-form-handler="true">
    <input type="email" data-validation="required,email">
</form>

可用验证器:

  • required:必填验证
  • email:邮箱格式验证
  • confirmation:字段一致性验证
  • minLength:最小长度验证

缓存系统改进

MySQL缓存失效存储

新增了基于MySQL的缓存失效存储方案,为没有Redis环境的用户提供了延迟缓存失效的替代方案。

配置示例:

shopware:
    cache:
        invalidation:
            delay: 1
            delay_options:
                storage: mysql

反向代理缓存清理器废弃

ReverseProxyCacheClearer将在下个主版本中移除,建议改用cache:clear:http命令来清理HTTP缓存。

邮件系统更新

OAuth2认证支持

使用OAuth2认证的邮件发送配置需要更新:

  1. 在管理后台选择"SMTP server with OAuth2"选项
  2. 填写必要字段
  3. 测试连接并检查错误日志

枚举类型支持

新增了对PHP BackedEnum类型的支持,可以与数据库ENUM类型配合使用,实现类型安全的字段值限制。

实现示例:

enum PaymentProvider: string {
    case PAYPAL = 'paypal';
    case CREDIT_CARD = 'credit_card';
}

class EntityDefinition extends EntityDefinition {
    public function getFields(): FieldCollection {
        return new FieldCollection([
            new EnumField('paymentProvider', 'payment_provider', PaymentProvider::CREDIT_CARD),
        ]);
    }
}

结语

Shopware 6.6版本带来了多项重要改进,特别是在实体扩展、表单可访问性和缓存管理方面。开发者应特别注意废弃功能的迁移路径,并充分利用新引入的功能来提升开发效率和用户体验。

shopware Shopware 6 is an open commerce platform based on Symfony Framework and Vue and supported by a worldwide community and more than 1.500 community extensions shopware 项目地址: https://gitcode.com/gh_mirrors/sh/shopware

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

武允倩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值