客製化表單
在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的部份會有錯誤,還須手動修正。