2

z3c.form は、次のようにコンバーターを登録します。

<adapter
  factory=".converter.DatetimeDataConverter"
  />

overrides.zcmlを使用してPloneでこのコンバーターをオーバーライドすることは可能ですか? overrides.zcml をオーバーライドするには、どのような入力が必要ですか? インターフェイスに一致する定義を .py コードからコピーする必要があります。

class DatetimeDataConverter(CalendarDataConverter):
    """A special data converter for datetimes."""
    zope.component.adapts(
        zope.schema.interfaces.IDatetime, interfaces.IWidget)

z3c.converters をオーバーライドする他の非モンキー パッチ手段はありますか?

4

1 に答える 1

2

より具体的なインターフェイス用に新しいコンバーターを登録するだけです。

 <adapter
     factory=".myconverter.MyDatetimeDataConverter"
     for="zope.schema.interfaces.IDatetime
          z3c.form.interfaces.ITextWidget"
     />

例として、カスタムコンバーターを使用ITextWidgetするウィジェットに登録します。

オーバーライドは、アダプターを同じ登録で置き換えます。<adapter />通常の ZCML ファイルでの登録と同様に、必要に応じて、(マルチ) 適応するインターフェイスと、ファクトリ オブジェクトから提供されるインターフェイスを取得します。そのため.adapts()、独自のコンバーターで使用する場合は、<adapter />登録でその情報を繰り返す必要はありません。

于 2012-11-29T14:50:00.663 に答える