Plone 4.3 - Как собрать пакет Form, используя Zc3.form без Grok?

Я пытаюсь создать пакет формы для веб-сайта Plone. В настоящее время я работаю с Plone 4.3. Раньше я использовал Dexterity с библиотеками five.grok и grok. Но после прочтения раздела о миграции Plone 4.3 и разделе о зависимостях five.grok в этой статье: http://developer.plone.org/components/grok.html выясняется, что разработчики Plone отказываются от использования grok вместе.

Так что мне следует отказаться от использования Grok и как мне поступить, когда вся текущая документация в настоящее время использует Grok? Кроме того, я разрабатываю на компьютере под управлением Windows.

1 ответ

Решение

Первое создание формы без 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. Таким образом, добавление зависимости - это то, что всегда должно выполняться только при необходимости. Грок это вариант, поэтому я никогда не использовал его.

Другие вопросы по тегам