Spa*_*nky 1 zope plone wizard z3c.form
Plone/Zope的z3cforms 继承自BrowserPage,因此应该能够在不使用其他View和View类的情况下进行渲染.当我尝试这样做时,表单呈现得很好,但没有表单的字段出现.我试图解决为什么会发生这种情况.请记住,此示例使用的是collective.z3cform.wizard,它实际上提供了两个类,一个向导和一个步骤.一个向导是一个表格(大写F),其主要提供机械粘合在一起的步骤和会话保持状态,并且步骤只是一种形式.
对我来说,感觉就像宏不正确,上下文错误,或者需要对表单进行一些包装/解包.基本上,我觉得我缺少一些神奇的代码或信息,这通常是Plone的情况.
当表单连接到使用单独的视图(这是多余的)时,表单呈现正常显示所有字段.
由于我理解这很复杂,我在GitHub上构建了一个仅示例的独立包来展示问题.如果您将此软件包安装到具有buildout的库存Plone站点中,您将获得三个视图:
http://localhost:8080/Plone/working
http://localhost:8080/Plone/almost
http://localhost:8080/Plone/broken
Run Code Online (Sandbox Code Playgroud)
该工作视图需要一个单独的视图和一个全模板包裹TAL标签,这既是杂牌和冗余...但它的工作原理,并呈现与它的所有字段的形式.
该破碎的观点是有线了应该如何,与代表视图本身的形式,例如,用在Wizard类定义的模板.
的几乎视图是相同的破碎视图,不同之处在于该模板与该向导的相关联的步骤,而不是向导本身.这会导致渲染损坏,但表单会渲染其所有字段.
我希望有人可以帮我追踪为什么破碎的视图呈现形式,完成按钮,但没有形式的字段.
先感谢您.
您的断开视图不会渲染字段,因为它不会尝试渲染当前步骤.默认向导模板中包含以下内容:
<div tal:define="form nocall:view/currentStep"
tal:replace="structure form/render" />
Run Code Online (Sandbox Code Playgroud)
查找当前步骤并呈现它.但是你已经用自己的模板覆盖了它,它只调用了ploneform-macros,这是一个通用的z3c.form,它对步骤的存在一无所知.
您应该坚持使用默认的向导模板而不是覆盖它,或者如果您需要自定义它,您应该从collective.z3cform.wizard复制默认的wizard.pt作为起点.
与此同时,你的"差点"观点确实几乎正常.这里的问题是向导的默认模板在中间呈现步骤的模板...但是你的步骤模板被设置为生成一个完整的html页面(因为它使用main_template中的主宏).如果你需要自定义这个模板,我会再次建议从czwizard复制默认步骤模板(wizard-step.pt)
| 归档时间: |
|
| 查看次数: |
140 次 |
| 最近记录: |