2013-09-30 6 views
5

Sto provando a creare un pacchetto di moduli per un sito web Plone. Attualmente sto lavorando con Plone 4.3. Prima stavo usando Dexterity con cinque librerie.grok e grok. Ma dopo aver letto la migrazione di Plone 4.3 e la sezione di dipendenza da cinque.grok di questo articolo: http://developer.plone.org/components/grok.html sembra che gli sviluppatori di Plone si stiano allontanando dall'usare tutti insieme.Plone 4.3 - Come creare un pacchetto di moduli usando Zc3.form senza Grok?

Quindi dovrei allontanarmi dall'usare Grok e come farei a farlo quando tutta la documentazione attuale sta usando Grok? Inoltre sto sviluppando da una macchina basata su Windows.

risposta

3

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:

  • Alcune importazioni
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 _ 
  • Creare uno schema
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 
  • quindi scrivere la forma
class AddForm(AutoExtensibleForm, form.Form): 
    schema = AddFormSchema 
    form_name = 'add_content' 
  • Aggiungere una vista
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.

+0

+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? –

+1

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

+0

Ah ok, sembra ragionevole. Merci per l'informazione utile! –

Problemi correlati