2012-01-20 4 views
3

Предположим, у меня есть следующий код в файле configure.zcml. Я хочу, чтобы мой класс будет реализован для другого интерфейса тоже, скажем Interface2Zope3 браузер: страница с несколькими интерфейсами

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

ответ

6

Вы должны зарегистрировать его в два раза, один раз для каждого интерфейса.

Имя может быть тем же самым, не получая ConfigurationConflictError, так как browserview является именованным мульти-адаптер, который адаптирует как объект, обеспечивающий определенный интерфейс (т.е. Интерфейс1 или 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" /> 

<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, для того же сам интерфейс объекта (и с тем же именем), но с разборчивыми критериями являются интерфейсом предоставляется по запросу. Это то, что для слоя для атрибута.

+0

Спасибо, он работал идеально для меня. – bogtan

Смежные вопросы