1

我创建了一个在启用行为时应该可用的视图。

from behaviors import IMyBehavior

class View(grok.View):
    grok.context(IMyBehavior)
    grok.require('zope2.View')
    grok.name('my-view')

我还将行为添加到 configure.zcml

  <include package="plone.behavior" file="meta.zcml" />

  <plone:behavior
        title="My View Behavior"
        description="foobar"
        provides=".behaviors.IMyBehavior"
        />

在阅读http://plone.org/products/dexterity/documentation/manual/behaviors/referencemanual-all-pages上的主要标记行为部分后,我认为这已经足够了。但显然不是。当我启用 MyBehavior TTW 然后尝试打开我的视图时,视图不可用。

我意识到,如果我在启用/禁用行为后重新启动我的 plone 实例,它会按预期工作。我猜在启用行为 TTW 后,必须重新注册视图。

现在的问题是我该怎么做?

4

1 回答 1

2

无法重新注册视图。

在 moemt Zope 应用程序服务器启动并导入 Python 模块时,注册被写入 Zope 组件注册表。这是一次性操作,与您的代码相关,而不是您的数据。

更像是这个问题听起来是在这个过程中其他东西崩溃了。也许内容类型实际上并没有提供问题中的行为标记接口。这可能是因为某些东西干扰了该过程:您的代码在启动时没有被读取,或者 plone.behaviors 中存在内部错误。请参阅 optilude 的评论如何测试标记接口是否可用。

于 2012-09-03T06:36:01.603 回答