4

我在一个空白的 Plone 4.1 站点上安装了collective.quickupload,并注意到当您添加一个快速上传 portlet 时,kss 调用字段验证 (plone.app.form.kss),getSite 函数将返回一个 FormlibValidation 对象,这会导致快速上传词汇崩溃。

追溯在这里: http: //pastebin.com/nvwChpZd

我的问题是:

  • 那(getSite 函数返回 FormlibValidation 对象)是错误还是预期行为?

  • 解决/解决/使collective.quickupload工作的解决方案?

4

1 回答 1

4

getSite() 返回最近的组件站点(可以存储本地实用程序的地方),这实际上只是意味着最后一次使用 setSite() 设置的内容,这通常发生在遍历时。

大多数时候,调用 setSite() 的唯一遍历钩子是在您遍历 Plone 站点时触发的钩子。但我认为旧的 KSS 内联表单验证机制使用(使用?)一个 hack,它动态创建一个本地组件站点(在视图中),并在请求的其余部分将其设置为本地站点,以便它可以覆盖某些事物。

您可以禁用验证(例如禁用portal_kss 中的相关KSS 文件)或修复c.quickupload 以检查getSite() 的结果是否为ISiteRoot。如果不是,它应该是采集包装的,所以你可以做 aq_parent(site) (或者可能是 site.parent )来让级进入一个循环,直到你找到一个 ISiteRoot。

于 2011-09-19T07:41:49.760 回答