Первое создание формы без grok не так сложно и не зависит от вашей операционной системы.
Создание формы всегда одно и то же. Вот как я поступаю:
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"
)
- создать универсальный адаптер для заполнения формы из любого места
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
- Теперь время ZCML, это шаг, который вам не нужен при использовании grok:
<adapter factory=".my.AddFormAdapter"/>
<browser:page
for="*"
name="my.addbutton"
class=".my.AddButton"
template="addbutton.pt"
permission="zope2.View"
/>
Если вы перейдете от грока:
Это зависит от того, что вы делаете. Для аддона я говорю да, но для проекта это зависит от вас.
Grok не является частью уже большой Zope. Таким образом, добавление зависимости всегда должно выполняться только в случае необходимости. Grok - это вариант, поэтому я никогда его не использовал.
person
toutpt
schedule
03.10.2013