客製化表單

在plone中,表單的客製,是比較麻煩的一節,較難以處理,這裏試著在Dexterity中舉範例如下:

在configure.zcml中,加入設定如下:

  <adapter
      for="Products.CMFCore.interfaces.IFolderish
           Products.CMFDefault.interfaces.ICMFDefaultSkin
           plone.dexterity.interfaces.IDexterityFTI"
      provides="zope.publisher.interfaces.browser.IBrowserPage"
      factory=".article.AddView"
      name="reporter.content.article"
      />
  <browser:page
      for="reporter.content.article.IArticle"
      name="edit"
      permission="cmf.ModifyPortalContent"
      class=".article.EditForm"
      />

然後,在 dexterity 的 .py 檔中,interface class後面加入:

from plone.dexterity.browser.add import DefaultAddForm, DefaultAddView
from plone.dexterity.browser.edit import DefaultEditForm, DefaultEditView
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile

class AddForm(DefaultAddForm):
    template = ViewPageTemplateFile('addFormForArticle.pt')

class AddView(DefaultAddView):
    form = AddForm

class EditForm(DefaultEditForm):
    template = ViewPageTemplateFile('editFormForArticle.pt')

class EditView(DefaultEditView):
    form = EditForm

然後,再編輯 addFormForArticle.pt, editFormForArticle.pt 即可

註:addFormForArticle.pt, editFormForArticle.pt 這二個檔案,可以直接copy

plone.app.z3cform/plone/app/z3cform/templates/macros.pt 來使用,

但formedit的部份會有錯誤,還須手動修正。