【问题标题】:How do you override the default value of a field in a dexterity behavior in Plone?如何在 Plone 的灵巧行为中覆盖字段的默认值?
【发布时间】:2011-07-12 10:04:46
【问题描述】:

我们要求敏捷内容类型从导航行为中排除,但 exclude_from_nav 字段的默认值为 True。在plone.app.dexterity.behaviors.exclfromnav.IExcludeFromNavigation 行为中,它默认为False

显然,我可以创建自己的行为来复制 IExcludeFromNavigation(默认值除外),但我想知道是否有一种基于重用 IExcludeFromNavigation 的方法来做到这一点。我们还有其他使用 IExcludeFromNavigation 的内容类型,我们希望它默认为 False

我们正在使用 Plone 4.1rc3 和 Dexterity 1.0

【问题讨论】:

    标签: plone behavior dexterity


    【解决方案1】:

    http://plone.org/products/dexterity/documentation/manual/developer-manual/advanced/defaultshttp://pypi.python.org/pypi/plone.directives.form#value-adapters,但基本上:

    @form.default_value(field=IExcludeFromNavigation['exclude_from_nav'], context=IMyType)
    def excludeFromNavDefaultValue(data):
        return True
    

    干杯, 马丁

    【讨论】:

    • 马丁。感谢您的回答,但这不是我所追求的。我可能错了,但context 这里似乎是您要添加项目的容器,我需要一个基于要添加的项目类型的规则。我可以使用data.request.URL 的测试看到一个丑陋的黑客,但更优雅的东西会很好
    【解决方案2】:

    我使用plone.directives.form 装饰器来完成这项工作。

    我已将此添加到我的一个行为模块中。

    from plone.directives.form import default_value
    
    @default_value(field = IExcludeFromNavigation['exclude_from_nav'])
    def excludeFromNavDefaultValue(data):
        return data.request.URL.endswith('++add++my_item_type')
    

    我在configure.zcml中也有以下内容

    <include package="plone.directives.form" file="meta.zcml" />
    <include package="plone.directives.form" />
    
    <grok:grok package="." />
    

    感谢 Martin 提供的大线索,尽管他的回答并没有完全解决我的问题。这对我来说感觉有点像 hack - 一个更优雅的解决方案会很好。

    【讨论】:

    • 另一种选择是注册一个自定义添加表单,然后使用“表单”(或者它是“视图”?)鉴别器到 default_value() 来指定仅对该表单的覆盖。跨度>
    • 谢谢,我在我的场景中使用了这个,我在同一个容器中有两种不同的对象类型,我想默认排除。问题是我不能在两个对象定义上放置相同的装饰器,否则我会收到配置冲突的投诉。我最终只声明了其中一种类型:: return data.request.URL.endswith('++add++my_item_type') 或 data.request.URL.endswith('++add++my_other_type')跨度>
    • 和你的例子一样,我必须删除上下文参数才能让它工作......确实看起来很hacky。
    猜你喜欢
    • 2019-03-12
    • 2012-04-05
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2017-04-26
    • 1970-01-01
    • 2013-03-10
    • 2023-03-21
    相关资源
    最近更新 更多