在节点编辑表单中嵌入带有Exposed Form Filter的视图(VBO表单)

时间:2013-02-07 06:45:59

标签: drupal drupal-6 views embed form-api

案例:  在另一个表单中插入/嵌入表单,同时在嵌入的输出中保留原始<form>标记。在这种情况下,它是一个视图批量操作表单,其中嵌入了节点编辑表单中的暴露表单过滤器。

问题: 嵌入时,表面上的一切看起来都很好,视图显示表单及其所有元素。但是,在检查Views Exposed Form渲染输出时,Exposed Filter将被剥离<form>标记。但是,当我在标准方式中将块添加到与节点编辑表单相同的页面上的区域时,Views Exposed Form输出包含<form>标记,并且Filter工作正常。

备注: 视图VBO表单的内容不受影响,并且在节点编辑表单中保持<form>标记完整。只有相同视图显示中的Exposed Form Filter才会被删除<form>。 此外,在视图中使用分页器并使用“使用Ajax”设置为“是”,如果单击到视图结果的下一页,则Ajax刷新表单包含“视图暴露表单”和过滤器的正确<form>标记从那时开始工作。

我尝试过的事情

  • 将曝光的表单设置为显示在块中,然后嵌入 使用module_invoke分别公开表单块('views','block', 'view',' - expand-instructor_select-page_1')。

  • 使用views_embed_view嵌入视图('VIEW-NAME', 'VIEW-DISPLAY') - VIEW-DISPLAY是'默认','page_1', 或'block_1' - 同样的问题。

  • 使用module_invoke嵌入视图块显示('views','block', 'view','VIEWS-DISPLAY-block_1');

  • 使用drupal_build_form直接插入表单($ form_id, &amp; $ form_state)(视图'替换为drupal_get_form)

经过测试:

  • 使用hook_form_alter

  • theme_preprocess_NODETYPE_node_form($ vars)

  • 在自定义视图公开过滤器中对标记进行硬编码 模板:

  • <form id="views-exposed-form-VIEWS-DISPLAY" method="get" accept-charset="UTF-8" action="/URL" class="views-processed"> 查看已曝光的表单模板代码 <input type="hidden" value="instructor_select" name="view_name"><input type="hidden" value="block_1" name="view_display_id"><input type="hidden" value="" name="view_args"><input type="hidden" value="user/1/edit/studio" name="view_path"><input type="hidden" value="URL-PATH" name="view_base_path"><input type="hidden" value="VIEWS-DISPLAY" name="view_dom_id"><input type="hidden" value="0" name="pager_element"></form>

我确信我错过了其他一些尝试解决这个问题的方法,但这应该足以作为尝试事项的例子。

无论表单如何嵌入节点编辑表单中,视图暴露过滤器都不起作用,因为缺少<form>元素,但AJAX可以与VBO表单的其余部分一起使用,并且在使用时Pager和AJAX刷新视图表单显示,正确呈现Exposed Form Filter标记并且过滤器工作。

此时我没有想法。我真的很感激如何尝试这一点的一些指针或代码示例。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我想做同样的事情并像你一样挣扎。我终于找到了对我有用的东西。 上下文:Drupal 6,在节点编辑表单上放置带有公开过滤器的ajax视图。

我在视图上创建了一个显示“块”,只需通过块管理UI插入它......事实证明它工作正常。