Первое создание формы без 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
- Теперь ZCM L раз это шаг вам не нужно при использовании ГРОК:
<adapter factory=".my.AddFormAdapter"/>
<browser:page
for="*"
name="my.addbutton"
class=".my.AddButton"
template="addbutton.pt"
permission="zope2.View"
/>
Если вы двигаетесь от Grok:
Это зависит от того, что вы делаете. Для аддона я говорю «Да», но для проекта это зависит от вас.
Grok не является частью уже большого Zope. Поэтому добавление зависимости - это то, что всегда нужно делать только в случае необходимости. Грок - это вариант, поэтому я никогда не использовал его.
+1 для очень приятного ответа, можно было сразу скопировать в документы. Просто интересно, нужен ли адаптер здесь, соответственно, если бы вы могли привести пример использования? –
спасибо. z3cform использует этот адаптер для заполнения формы в зависимости от контекста. Например, здесь вы можете предварительно загрузить где-то текущее содержимое, используя что-то вроде self.where = IUUID (self.context) – toutpt
Ах, это звучит разумно. Мерси на бис за полезную информацию! –