在节点编辑表单中嵌入带有公开表单过滤器的视图(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 表单)的主要内容,如果未能解决你的问题,请参考以下文章
PHP 表单更改以强制公开的视图过滤器以fllow过滤器选项