在节点编辑表单中嵌入带有公开表单过滤器的视图(VBO 表单)

Posted

技术标签:

【中文标题】在节点编辑表单中嵌入带有公开表单过滤器的视图(VBO 表单)【英文标题】:Embedding a Views (VBO form) with Exposed Form Filter within a Node edit form 【发布时间】:2013-02-07 06:45:59 【问题描述】:

案例: 在另一个表单中插入/嵌入表单,同时在嵌入输出中保留原始 <form> 标记。在这种情况下,它是一个 Views Bulk Operations 表单,其中包含嵌入在节点编辑表单中的公开表单过滤器。

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

注意事项: VBO 表单的视图内容不受影响,其<form> 标记在节点编辑表单中完好无损。只有同一视图显示中的 Exposed Form Filter 会被删除它的 <form>。 此外,在视图显示中使用分页器并将 Use Ajax 设置为 Yes,如果我单击视图结果的下一页,Ajax 刷新表单包含 Views Exposed Form 的正确 <form> 标记,并且过滤器从然后继续。

我尝试过的事情

将公开的表单设置为出现在一个块中,然后嵌入 使用 module_invoke('views', 'block', 'view', '-exp-instructor_select-page_1')。

使用views_embed_view('VIEW-NAME', 'VIEW-DISPLAY') - VIEW-DISPLAY 是否为 'default', 'page_1', 或“block_1”——同样的问题。

使用 module_invoke('views', 'block', 'view', 'VIEWS-DISPLAY-block_1');

直接使用drupal_build_form($form_id, &$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>

我确定我错过了我尝试解决此问题的其他一些方法,但这应该足以作为尝试的示例。

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

在这一点上,我没有想法。我真的很感激一些关于如何尝试的指针或代码示例。

提前致谢。

【问题讨论】:

【参考方案1】:

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

我在视图上创建了一个显示“块”,然后通过块管理 UI 将其插入...结果证明它工作正常。

【讨论】:

以上是关于在节点编辑表单中嵌入带有公开表单过滤器的视图(VBO 表单)的主要内容,如果未能解决你的问题,请参考以下文章

Drupal 7 Views 3:搜索特定字段的公开过滤器

在 Drupal 中搜索视图

PHP 表单更改以强制公开的视图过滤器以fllow过滤器选项

drupal 6和视图节点表单

Treeview控件(comctl32 / VB5-era)缺少图标和标题?

Drupal 公开视图过滤器自定义日期