Interface Zope3浏览器:页面多界面

Interface Zope3浏览器:页面多界面,interface,zope,zope3,zcml,Interface,Zope,Zope3,Zcml,假设我在configure.zcml文件中有以下代码。我希望我的类也能为另一个接口实现,比如说Interface2 <browser:page for="Interface1" class="plone.app.content.browser.reviewlist.FullReviewListView" name="full_review_list" template="document_full_review_list.pt

假设我在configure.zcml文件中有以下代码。我希望我的类也能为另一个接口实现,比如说
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" />


您必须注册两次,每个接口注册一次

由于browserview是一个命名的多适配器,它同时适配提供特定接口(即Interface1或Interface2)的对象和请求,因此名称可以相同,而不会出现ConfigurationConflictError

因此,如果对象应该为每个browserview注册提供不同的接口,则不存在冲突

<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" />

相反,对于相同的对象接口(并且具有相同的名称),您可以有两个browserview注册,但识别标准是请求提供的接口。这就是层属性的作用

<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" />