如何在Plone中覆盖灵巧行为中字段的默认值?

时间:2011-07-12 10:04:46

标签: plone behavior dexterity

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

显然我可以创建自己的行为来复制IExcludeFromNavigation除了默认值,但我想知道是否有办法在重用IExcludeFromNavigation时执行此操作。我们还有其他使用IExcludeFromNavigation的内容类型,我们希望它默认为False

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

2 个答案:

答案 0 :(得分:5)

请参阅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

干杯, 马丁

答案 1 :(得分:3)

我使用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="." />

感谢马丁的大线索,尽管他的答案并没有解决我的问题。这对我来说有点像黑客 - 一个更优雅的解决方案会很好。