gpt4 book ai didi

interface - Zope3 浏览器 :page multiple interfaces

转载 作者:行者123 更新时间:2023-12-03 08:04:03 25 4
gpt4 key购买 nike

假设我的 configure.zcml 文件中有以下代码。我也希望为另一个接口(interface)实现我的类,比方说 Interface2

<browser:page
for="Interface1"
class="plone.app.content.browser.reviewlist.FullReviewListView"
name="full_review_list"
template="document_full_review_list.pt"
permission="cmf.ReviewPortalContent" />

如何在我的 zcml 文件中声明它?

这么久我尝试了以下方法:

<browser:page
for="Interface1 Interface2"
class="plone.app.content.browser.reviewlist.FullReviewListView"
name="full_review_list"
template="document_full_review_list.pt"
permission="cmf.ReviewPortalContent" />

<browser:page
for="Interface1"
allowed_interface="Interface2"
class="plone.app.content.browser.reviewlist.FullReviewListView"
name="full_review_list"
template="document_full_review_list.pt"
permission="cmf.ReviewPortalContent" />

最佳答案

您必须注册两次,每个接口(interface)一次。

名称可以相同,而不会出现ConfigurationConflictError,因为浏览器 View 是一个命名的多适配器,它适应提供特定接口(interface)的对象(即 Interface1Interface2) 和请求。

所以如果对象应该提供的接口(interface)对于每个浏览器 View 注册是不同的,那么就没有冲突。

<browser:page
for="Interface1"
class="plone.app.content.browser.reviewlist.FullReviewListView"
name="full_review_list"
template="document_full_review_list.pt"
permission="cmf.ReviewPortalContent" />

<browser:page
for="Interface2"
class="plone.app.content.browser.reviewlist.FullReviewListView"
name="full_review_list"
template="document_full_review_list.pt"
permission="cmf.ReviewPortalContent" />

相反,您可以有两个浏览器 View 注册,用于相同的对象接口(interface)(并且具有相同的名称),但辨别标准是请求提供的接口(interface)。这就是 layer 属性的用途。

关于interface - Zope3 浏览器 :page multiple interfaces,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8941292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com