Plone/Zope 的 z3cforms继承自 BrowserPage,因此应该能够在不使用额外的 View 和 View Class 的情况下呈现。当我尝试这样做时,表单呈现正常,但表单的字段都没有出现。我正在尝试解决为什么会发生这种情况。请记住,这个示例使用了collective.z3cform.wizard,它本质上提供了两个类,一个Wizard 和一个Step。Wizard 是一个Form(大写 F),它主要提供将 Step 粘合在一起并通过会话保持状态的机制,而Step 只是一个 Form。
对我来说,感觉要么宏不正确,上下文错误,要么需要对表单进行一些包装/展开。基本上,我觉得我缺少一些神奇的代码行或一条信息,这通常是 Plone 的情况。
当表单被连接以使用单独的视图(这是多余的)时,表单可以很好地呈现所有字段。
因为我知道这很复杂,所以我在 GitHub 上构建了一个仅示例的独立包来展示这个问题。如果您将此软件包安装到带有 buildout 的股票 Plone 站点中,您将获得三个视图:
http://localhost:8080/Plone/working
http://localhost:8080/Plone/almost
http://localhost:8080/Plone/broken
工作视图需要一个单独的视图和一个完整的模板包装 TAL 标签,这既是杂乱无章的又是多余的……但它可以工作并呈现带有所有字段的表单。
损坏的视图按照应有的方式连接起来,表单实例代表视图本身,模板在Wizard 类中定义。
几乎视图与断开视图相同,只是模板与向导的步骤相关联,而不是与向导本身相关联。这会导致渲染中断,但表单会使用其所有字段进行渲染。
我希望有人可以帮助我追查为什么损坏的视图会呈现表单,并带有按钮,但没有表单的字段。
先感谢您。