首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在z3c.form表单中使用WysiwygFieldWidget

在z3c.form表单中使用WysiwygFieldWidget
EN

Stack Overflow用户
提问于 2012-01-31 21:08:23
回答 2查看 316关注 0票数 2

我正在用z3c.form创建一个表单,对于一个文本区,我想有一个所见即所得的界面。

所以我使用plone.directives.form来处理这个问题。

在我的interfaces.py中:

代码语言:javascript
复制
from zope import schema
from plone.directives import form
from plone.app.z3cform.wysiwyg import WysiwygFieldWidget

from zope.i18nmessageid import MessageFactory
_ = MessageFactory('BSWMinisite')

class IMinisiteProperties(form.Schema):
    """ """
    form.widget(edito=WysiwygFieldWidget)
    edito = schema.Text(title = u"Edito", 
                    required=False)

在我的content.py中:

代码语言:javascript
复制
from plone.directives import form
from z3c.form import button
from Products.CMFPlone import PloneMessageFactory as plMF
from plone.z3cform.layout import wrap_form
from Products.CMFCore.utils import getToolByName

from Products.BSWMinisite.interfaces import IMinisiteProperties


class MinisitePropertiesForm(form.SchemaForm):
    """ """

    schema = IMinisiteProperties
    ignoreContext = True # don't use context to get widget data
    @button.buttonAndHandler(plMF('label_save', default=u'Save'), name='apply')
    def handleApply(self, action):
        """ stuff """

    @button.buttonAndHandler(plMF('label_cancel', default=u'Cancel'),
                         name='cancel')
    def handleCancel( self, action):
        self.request.RESPONSE.redirect( self.context.absolute_url() )

MinisitePropertiesView = wrap_form(MinisitePropertiesForm)

在configure.zcml中,我有:

代码语言:javascript
复制
<include package="plone.directives.form" file="meta.zcml" />
<include package="plone.directives.form" />
<browser:page
  for="*"
  name="minisite_properties"
  class=".browser.content.MinisitePropertiesView"
  permission="cmf.ModifyPortalContent"
  />

当我转到@@minisite_properties时,我看到了我的字段,但没有所见即所得。你知道我遗漏了什么吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-28 18:45:10

所以,问题是我没有正确的dexterity版本,我的包也没有被正确理解。

在buildout中,要锁定正确的灵活性:

代码语言:javascript
复制
extends = 
    base.cfg
    versions.cfg
    http://good-py.appspot.com/release/dexterity/1.1?plone=4.1.3

在主configure.zcml中:

代码语言:javascript
复制
<configure xmlns="http://namespaces.zope.org/zope"
       xmlns:browser="http://namespaces.zope.org/browser"
       xmlns:five="http://namespaces.zope.org/five"
       xmlns:i18n="http://namespaces.zope.org/i18n"
       xmlns:grok="http://namespaces.zope.org/grok"
       i18n_domain="BSWMinisite">

  <!-- Grok the package to initialise schema interfaces and content classes -->
  <grok:grok package="." />

  <browser:page
    for="*"
    name="minisite_properties"
    class=".browser.content.MinisitePropertiesView"
    permission="cmf.ModifyPortalContent"
    />
  ...

然后在我的content.py中:

代码语言:javascript
复制
from five import grok

class MinisitePropertiesForm(form.SchemaForm):
    """ """

    grok.context(IMinisiteProperties)
    schema = IMinisiteProperties
票数 0
EN

Stack Overflow用户

发布于 2012-01-31 21:24:20

下面是我使用Dexterity 1.1引出的Dexterity内容模式的示例代码(参见Dexterity手册,安装部分)

代码语言:javascript
复制
from five import grok
from zope import schema

from plone.directives import form, dexterity

from plone.app.z3cform.wysiwyg import WysiwygFieldWidget

class ICourseInfoContent(form.Schema):
    """
    Content page for CourseInfo folders
    """

    # Autofilled by course id
    title = schema.TextLine(title=u"Title", required=True, default=u"")

    # -*- Your Zope schema definitions here ... -*-
    form.widget(body=WysiwygFieldWidget)
    body = schema.Text(title=u"Body (top)")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9080062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档