首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在z3c.form中重写CalendarDateConverter

在z3c.form中重写CalendarDateConverter
EN

Stack Overflow用户
提问于 2012-11-29 19:21:02
回答 1查看 106关注 0票数 2

z3c.form注册的转换器如下所示:

代码语言:javascript
复制
<adapter
  factory=".converter.DatetimeDataConverter"
  />

是否可以使用overrides.zcml在Plone中覆盖此转换器?overrides.zcml需要提供哪种类型的输入才能覆盖它?是否应该从.py代码中复制匹配定义的接口:

代码语言:javascript
复制
class DatetimeDataConverter(CalendarDataConverter):
    """A special data converter for datetimes."""
    zope.component.adapts(
        zope.schema.interfaces.IDatetime, interfaces.IWidget)

是否有任何其他非猴子修补方法来覆盖z3c.converters?

EN

回答 1

Stack Overflow用户

发布于 2012-11-29 22:50:01

我只需为更具体的接口注册新的转换器:

代码语言:javascript
复制
 <adapter
     factory=".myconverter.MyDatetimeDataConverter"
     for="zope.schema.interfaces.IDatetime
          z3c.form.interfaces.ITextWidget"
     />

我以ITextWidget为例,在您希望使用自定义转换器的小部件中注册它。

覆盖将替换具有相同注册的适配器。就像常规ZCML文件中的<adapter />注册一样,它将获取它(多)适配的接口以及它从工厂对象提供的接口(如果需要的话),所以如果您在自己的转换器上使用.adapts(),那么您就不需要在<adapter />注册中重复该信息。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13624637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档