5

在处理基于灵巧的项目时,我需要我的一种内容类型来支持collective.quickupload,方法是使用IQuickUploadCapable 接口对其进行标记。

我目前正在做的是在我的 configure.zcml 文件中添加一个“实现”:

`<class class="plone.dexterity.content.Container">      
     <implements interface="collective.quickupload.browser.interfaces.IQuickUploadCapable" />
 </class>`

因为我的内容类型是一个容器,所以我的第一个倾向是使用 grok 风格的方法,而不是在 ZCML 中声明它。告诉我的敏捷内容类型它实现了一个附加接口的 grok/敏捷方法是什么,还是我应该坚持当前的方法?

此外,我尝试将接口作为行为添加到我的profiles/default/types/my.dexterity.content.xml文件中,但这不起作用(我真的没想到它会因为行为服务于不同的目的)。

4

3 回答 3

4

肖恩的回答很好。另一种方法是创建一个行为并应用它。您需要通过以下方式注册行为:

<plone:behavior
    title="Quickupload"
    provides="collective.quickupload.browser.interfaces.IQuickUploadCapable"
    />

然后,您可以将“collective.quickupload.browser.interfaces.IQuickUploadCapable”添加到 FTI 中的行为列表中。

您使用的方法不好,因为这意味着所有基于容器的敏捷类型都获得了标记接口,而不仅仅是您的类型。

于 2011-10-19T09:57:37.203 回答
2

为什么不将 IQuickUploadCapable 子类化为类型接口中 form.Schema 之后的 mixin?

于 2011-10-18T23:13:22.770 回答
1

您不能将其用作行为,因为它并未声称以这种方式使用。

正如我从pypi中读到的,它旨在用于 portlet 或 viewlet。

要以 grok 风格添加它,您应该:

from collective.quickupload.browser.interfaces import IQuickUploadCapable
from plone.directives import form
class IMyContent(form.schema):
    grok.implements(IQuickUploadCapable)

就是这样!

确保您的内容类型允许在其中添加文件,因此既是文件夹式又允许添加文件(或者它不限于任何特定的内容类型)。

于 2011-10-18T18:21:50.363 回答