collective.z3cform.datagridfield
ビルドアウトに追加しました。サイト設定でアクティブとして表示されます。datagridfield
ただし、器用さのコンテンツ タイプの Web エディターを使用してタイプのフィールドを追加することはできません。私は何が欠けていますか?
1 に答える
2
vangheem の回答の拡張: フィールド ファクトリを提供することで、collective.z3cform.datagridfield のサポートを提供できますが、それはハックになります。
その理由はcollective.z3cform.datagridfield.row.DictRow
、テーブルの行を定義するスキーマが必要だからです。これは、レンダリングされるとサブフォームになります。このインスタンスの schemaeditor は、フィールド タイプに応じて (table-) スキーマについても問い合わせる必要があります。
求めているソリューションによっては、次のような固定テーブル スキーマを使用してフィールド ファクトリを実装することで回避できる場合があります。
from five import grok
from zope import schema
import collective.z3cform.datagridfield.row
import plone.schemaeditor.interfaces
import zope.interface
# example from http://pypi.python.org/pypi/collective.z3cform.datagridfield
class ITableRowSchema(zope.interface.Interface):
one = schema.TextLine(title=u"One")
two = schema.TextLine(title=u"Two")
three = schema.TextLine(title=u"Three")
# new field factory for the zope.schema.interfaces.IObject
class DataGridFieldFactory(grok.GlobalUtility):
grok.provides(plone.schemaeditor.interfaces.IFieldFactory)
# this will show up in the schema editor vocabulary
title = "DataGridField"
def __call__(self, *args, **kwargs):
# that's the horrid part as it will nail your field to this
# specific schema
kw = dict(value_type=collective.z3cform.datagridfield.row.DictRow(
schema=ITableRowSchema))
kwargs.update(kw)
return zope.schema.List(*args, **kwargs)
plone.schemaeditor.fields.py
フィールドファクトリーの詳細については、以下をご覧ください。
これにより、コンテンツ タイプの基本的なデータグリッドが得られます。欠けているのはウィジェットです。現在、AFAIK と宣言することはできません。
于 2012-01-19T00:51:35.927 に答える