Il primo modulo di creazione senza grok non è così difficile e non dipende dal sistema operativo.
La creazione di un modulo è sempre la stessa. Ecco come procedo:
from Products.Five.browser import BrowserView
from plone.autoform.form import AutoExtensibleForm
from plone.app.z3cform import layout
from zope import interface
from zope import schema
from zope import component
from z3c.form import form
from collective.my.i18n import _
class AddFormSchema(interface.Interface):
what = schema.Choice(
title=_(u"What"),
vocabulary="plone.app.vocabularies.UserFriendlyTypes"
)
where = schema.Choice(
title=u"Where",
vocabulary="collective.my.vocabulary.groups"
)
- creare un adattatore generico per compilare il modulo da qualsiasi
class AddFormAdapter(object):
interface.implements(AddFormSchema)
component.adapts(interface.Interface)
def __init__(self, context):
self.what = None
self.where = None
class AddForm(AutoExtensibleForm, form.Form):
schema = AddFormSchema
form_name = 'add_content'
class AddButton(layout.FormWrapper):
"""Add button"""
form = AddForm
- Ora ZCM L Tempo questo è il passo non è necessario quando si utilizza Grok:
<adapter factory=".my.AddFormAdapter"/>
<browser:page
for="*"
name="my.addbutton"
class=".my.AddButton"
template="addbutton.pt"
permission="zope2.View"
/>
caso di trasferimento da Grok:
Questo dipende di quello che stai facendo. Per un addon dico Sì ma per un progetto, dipende da te.
Grok non fa parte del già grande Zope. Quindi aggiungere dipendenza è qualcosa che dovrebbe sempre essere fatto solo se necessario. Grok è un'opzione quindi non l'ho mai usato.
+1 per una risposta molto piacevole, potrebbe essere copiato subito nei documenti, in realtà :) Solo chiedendo, se l'adattatore è necessario qui, rispettivamente, se si potesse fornire un esempio di utilizzo per questo? –
grazie. z3cform usa questo adattatore per riempire il modulo a seconda del contesto. Ad esempio, qui potresti voler precaricare il punto con il contenuto corrente usando qualcosa come self.where = IUUID (self.context) – toutpt
Ah ok, sembra ragionevole. Merci per l'informazione utile! –