2011-11-10 13 views
4

私の敏捷性コンテンツタイプを取得してカスタムフォームを表示する際に問題があります。私は以前の製品ですでにこれを行っていましたが、驚くべきことに、Plone 4.1とplone.app.dexterity 1.0.3を使用してこれを達成することはできません。Plone 4の敏捷性を持つカスタムAddFormテンプレート

私のCrmContactコンテンツタイプは、package.name.types.contact.py

from five import grok 
from zope import schema 
from zope.interface import implements 

from plone.directives import form, dexterity 


class ICrmContact(form.Schema): 
    """A contact item for the CRM""" 

    title = schema.TextLine(
      title=_(u"Company name"), 
    ) 

    ... 

class CrmContact(dexterity.Container): 
    implements(ICrmContact) 


class Add(dexterity.AddForm): 

    grok.context(ICrmContact) 
    grok.name('package.name.contacts.types.contact') 
    grok.template('add') 

テンプレートは、パッケージ/ name/types/contact_templatesにあります。これは典型的なテンプレートです。例外を発生させるために、tal:contentを使用して既存のメソッドを呼び出さないダミーノードがあるため、レンダリングされていないことがわかります。私はテンプレート自体が問題ではないと確信しています。

コンテンツタイプFTIはインストール時に正しく登録され、コンテンツタイプは利用可能で追加可能です。

最後に、プロファイルの/デフォルト/ types.package.name.types.contact.xml:

<?xml version="1.0"?> 
<object name="package.name.types.contact" meta_type="Dexterity FTI" 
    i18n:domain="package.name" xmlns:i18n="http://xml.zope.org/namespaces/i18n"> 

    ... 

    <!-- Method aliases --> 
    <alias from="(Default)" to="(dynamic view)" /> 
    <alias from="edit" to="@@edit" /> 
    <alias from="sharing" to="@@sharing" /> 
    <alias from="view" to="(selected layout)" /> 

    <!-- Actions --> 
    <action title="View" action_id="view" category="object" 
     condition_expr="" url_expr="string:${object_url}" visible="True"> 
     <permission value="View" /> 
    </action> 
    <action title="Edit" action_id="edit" category="object" 
     condition_expr="" url_expr="string:${object_url}/edit" visible="True"> 
     <permission value="Modify portal content" /> 
    </action> 
</object> 

無関係、多分私はここで何かを追加する必要があります...

私は私が考えますあなたが見るかもしれないように正しい手順に従ってください、しかし私はまだそれを働かせることができません。

私はupdateWidgets()メソッドを提供してブレークポイントを挿入すると、クラスAddがインスタンス化されていることが分かります。オブジェクトをイントロスペクトすると、self.templateはNoneになります。

(Pdb) getattr(self, 'grokcore.view.directive.template') 
'add' 

私のカスタムタイプのフォームを追加するにはどうすればよいでしょうか?

+0

私はあなたがテンプレートを "templates"フォルダに追加しなければならないと思っていて、そのディレクトリに "contact_templates"を使用しているようです。 – vangheem

+1

敏捷性KGS 1.0.3に固定されたパッケージにいくつかのバグがあります。あなたはこれを使っていますか? http://good-py.appspot.com/release/dexterity/1.0.3-1?plone=4.1 – hvelarde

答えて

1

grok.context(ICrmContact)を削除してください。 http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/formsから

はまた、我々はここにコンテキストを指定しないことに注意してください。フォームの追加は常にIFolderishコンテキストに登録されます。

+0

そのページが表示されません。おそらくこれ? http://developer.plone.org/content/dexterity.html?highlight=dexterity%20addform#custom-add-form-view –

関連する問題