'У меня есть пакет с именем foo.package. И у меня также есть элемент контента с именем mydocument.py. В стандартной структуре внутри foo/package у меня есть браузер, контент, профили и т. д. Чего я хочу добиться, так это создать настраиваемый шаблон добавления для моего элемента контента, который называется mydocument. Я прочитал статью по этой ссылке http://docs.plone.org/external/plone.app.dexterity/docs/advanced/custom-add-and-edit-forms.html
Что я сделал, так это создал файл в каталоге браузера и назвал его mydocumentaddform.py. Кроме того, внутри моего каталога браузера у меня есть каталог шаблонов.
Код внутри mydocumentaddform.py:
from five import grok
from plone.directives import dexterity, form
from Products.CMFCore.utils import getToolByName
grok.templatedir('templates')
class mydocumentaddform(dexterity.AddForm):
grok.name('foo.package.mydocument')
form.wrap(False)
Внутри каталога browser/templates я создал шаблон mydocumentaddform.pt. Однако мой настроенный шаблон mydocumentaddform не отобразился, когда я добавил содержимое mydocument, поскольку внутри шаблона я добавил скрипт js, чтобы определить, переопределяет ли настроенный шаблон добавления шаблон добавления по умолчанию. Когда я просматриваю свой экземпляр, появляется предупреждение пользователя о том, что существует несвязанная конфигурация шаблона, которая указывает на мой шаблон добавления: ~... /foo/package/browser/templates/mydocumentaddform.pt
Есть ли кто-нибудь, кто сталкивался с такой же проблемой? Или есть другой способ сделать это? Спасибо.
* Да, я забыл включить кавычки здесь, на grok.name.
Обновление: я нашел временное решение внутри класса ViewPageTemplateFile. Вот обновленный код:
from five import grok
from plone.directives import dexterity, form
from Products.CMFCore.utils import getToolByName
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
grok.templatedir('templates')
class mydocumentaddform(dexterity.AddForm):
grok.name('foo.package.mydocument')
template = ViewPageTemplateFile('templates/mydocumentaddform.pt')
form.wrap(False)
Однако настроенный шаблон добавления был прочитан, но мой экземпляр всегда говорит, что шаблон, который я использовал, все еще не связан. Как я также заметил, когда я заменил базовый класс на dexterity.DisplayForm, ошибка экземпляра исчезла. С этим временным решением я не уверен в каком-либо возможном эффекте в будущем из-за этой постоянной ошибки.