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