Plone 自定义视图的遍历错误

Plone 自定义视图的遍历错误,plone,traversal,Plone,Traversal,使用定制产品处理Plone 3.3.6实例,该产品应显示flv类型的视频。我正试图找出从哪里开始排除这个遍历错误。我确信这在Plone 3.1.x上起了作用(尽管我确实有很好的想象力) 我是如何处理这件事的: 一般来说,在前台模式下启动我的实例进行故障排除(bin/instance fg)非常有用 在这个版本上是一个绝对的救命稻草(plone.app.z3cform 0.4.3没有固定选项,但0.4.9已经足够接近了。因此,我仍然必须在构建的[versions]部分明确固定0.4.3 回答我自己

使用定制产品处理Plone 3.3.6实例,该产品应显示flv类型的视频。我正试图找出从哪里开始排除这个遍历错误。我确信这在Plone 3.1.x上起了作用(尽管我确实有很好的想象力)

我是如何处理这件事的:

  • 一般来说,在前台模式下启动我的实例进行故障排除(bin/instance fg)非常有用
  • 在这个版本上是一个绝对的救命稻草(plone.app.z3cform 0.4.3没有固定选项,但0.4.9已经足够接近了。因此,我仍然必须在构建的[versions]部分明确固定0.4.3

  • 回答我自己的问题

    该问题与viewlet有关,与我试图访问的视图关联

    viewlet在名为“评估输入”的模板中引用了自定义z3c.form,因此这部分回溯:

    - URL: assessment_input
    - Line 12, Column 4
    
    我知道这一点是肯定的,因为当我在自定义产品的browser/configure.zcml中通过注释暂时禁用了有问题的viewlet时,视图开始工作(当然没有显示viewlet)

    基于z3c.form的表单在plone中的呈现方式在plone.z3cform及更高版本的0.5.8中发生了变化(此处记录:),在0.5.8之前的plone.z3cform版本中,过去可以通过调用viewlet模板中的“视图/内容”来呈现表单。回溯意味着更新的plone.z3cform(不支持“查看/内容”约定)导致错误

        - Expression: <PathExpr standard:'view/contents'>
    
        <snip> ...
    
          - __traceback_info__: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents', [])
       TraversalError: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
    
    正如问题中提到的,我使用一个好的py已知好集(KGS)固定了plone.app.z3cform 0.4.9的版本,我认为这是必要的,但还没有完全测试它


    现在这是一个足够好的解决方案,向前看,我需要为我的产品的较新版本重写viewlet,以便在升级到Plone 4.x时,viewlet支持Plone.z3cform较新的、可以说更好的呈现表单的方法。

    回答我自己的问题

    该问题与viewlet有关,与我试图访问的视图关联

    viewlet在名为“评估输入”的模板中引用了自定义z3c.form,因此这部分回溯:

    - URL: assessment_input
    - Line 12, Column 4
    
    我知道这一点是肯定的,因为当我在自定义产品的browser/configure.zcml中通过注释暂时禁用了有问题的viewlet时,视图开始工作(当然没有显示viewlet)

    基于z3c.form的表单在plone中的呈现方式在plone.z3cform及更高版本的0.5.8中发生了变化(此处记录:),在0.5.8之前的plone.z3cform版本中,过去可以通过调用viewlet模板中的“视图/内容”来呈现表单。回溯意味着更新的plone.z3cform(不支持“查看/内容”约定)导致错误

        - Expression: <PathExpr standard:'view/contents'>
    
        <snip> ...
    
          - __traceback_info__: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents', [])
       TraversalError: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
    
    正如问题中提到的,我使用一个好的py已知好集(KGS)固定了plone.app.z3cform 0.4.9的版本,我认为这是必要的,但还没有完全测试它

    现在这是一个足够好的解决方案,向前看,我需要为我的产品的更新版本重写viewlet,这样当我升级到Plone 4.x时,viewlet支持Plone.z3cform更新的、可以说更好的呈现表单的方法

        - Expression: <PathExpr standard:'view/contents'>
    
        <snip> ...
    
          - __traceback_info__: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents', [])
       TraversalError: (<Products.Five.viewlet.metaconfigure.MyFormWrapper object at 0xe4c36cc>, 'contents')
    
    [versions]
    plone.z3cform = 0.5.7