2012-01-17 6 views
4

にfieldsetの間でフィールドを移動する:は、別のフィールドセット(またはスキーマ)からフィールドを移動するために、我々は次の操作を行うことができ、原型で敏捷

schema['creators'].schemata = 'default' 

しかし、私は同じことを達成していませんよ敏捷性を使用して。フォームのヒントを使ってみました。例:

現時点ではフィールド「クリエイター」が不明なため、動作しないことがわかりました。 (所有行動はまだ評価されていませんでした)。

しかし、フォームヒントでは、「デフォルト」から別のもの(たとえば「所有権」)に移行することができます。

myfile = NamedFile(title=_(u"A file")) 
form.fieldset('ownership', fields=['myfile']) 

どうすればいいですか?自分の行動を書く?

Thx!

+2

多分、Form.updateWidgets()をオーバーライドしてZ3C Form.widgetsインスタンスを操作できますか? –

答えて

3

コントロールの下にあるインターフェイスに割り当てるフィールドを定義する必要があります。これは重複しているように見えますが、完全で明示的な目的のためには良いアイデアです。次のいずれかを実行できます

(1)

をお使いのコンテンツ・タイプ・インターフェース(おそらく、推奨される解決策)の「クリエイター」フィールドを宣言し、または...(2)ここに記載されているように、あなた自身の行動を使用します(これを追加portal_typesおよび関連するセットアップXMLの型のFTIに対する動作):http://docs.plone.org/external/plone.app.dexterity/docs/behaviors/creating-and-registering-behaviors.html

最初の解決策が最も簡単になるはずです。フィールドセットの位置や順序を制御したいフィールドは、いずれにしてもインターフェイスで定義する必要があります。

+1

次の(1)のように、私はスキーマインタフェースで 'creators = schema.Text()'のようなことをしなければなりません、そうですか?私はそれをしましたが、「IOwnership」の「クリエイター」は私が宣言したものと重複しませんでした。あなたには例がありますか? – tcurvelo

+1

はい、インターフェイスに「作成者」スキーマフィールドを作成し、動作としてFTIに混合する代わりにIOwnershipインターフェイスをサブクラス化します。あなたの選択を考慮せずに、編集フォームのplone.autoformグループに振る舞いがある可能性があります。行動を絶対に使用する必要がある場合は、上記のルート2を選択してください。 – sdupton

関連する問題