【问题标题】:Inline add/edit/delete data in views in Drupal 7在 Drupal 7 的视图中内联添加/编辑/删除数据
【发布时间】:2013-01-22 18:38:27
【问题描述】:

我正在尝试创建一种内容类型(例如 Meter)。每个仪表由一个“仪表读数”组成。此抄表内容包含三个字段,例如标题、日期范围和使用情况。我有一个面板页面,其中显示了与父仪表相关的所有仪表读数。我以表格格式显示了仪表读数。

我希望用户能够添加新的仪表读数,而无需转到默认的仪表读数创建页面。用户应该能够在提供的表格视图中输入数据,而不是默认的表单类型的页面,并且应该自动将其保存到项目本身中。

所以,我希望功能如下:-

  1. 通过两个链接(即编辑和删除)显示所有仪表读数,
  2. 当用户单击“编辑”链接时,抄表行应变为可编辑状态,并且用户应能够在同一个表中进行内联更改,
  3. 在页脚应该有一个添加新抄表的链接,当用户点击它时,一个新的空白行应该动态添加到表格中,用户应该能够在其中进行新的条目。

Drupal 7 中是否有这样做的模块?我已经为此尝试了几个模块,例如SlickGridjQGridjEditable

任何帮助都会很棒。提前致谢。

【问题讨论】:

  • 你到底想做什么?您想一次就地创建一个节点吗?还是您希望能够一次创建大量节点?
  • @PatrickKenny 不,我只是希望能够一次创建一个节点......就像我有一个数据表,在它下面我放置一个添加更多按钮,点击我得到将新行添加到表底部以创建新节点 + 表条目...

标签: drupal-7 drupal-views


【解决方案1】:

恐怕我不知道有一个模块可以开箱即用。但如果您继续使用自定义编码,您可以查看以下内容:

  1. 视图中每行的编辑和删除选项

使用Views Megarow。对于工作示例,您可以查看它在commerce backoffice 中的使用方式。请注意,您需要在自定义模块中为快速编辑表单编写表单结构( FORM api )。 Views Megarow 负责 ajax 填充编辑表单,在客户端提交,并在服务器响应后刷新原始行。

  1. 当用户点击编辑链接时,抄表行应该变成可编辑的并且用户应该能够在线进行更改 在同一张表中。

视图 Megarow 不支持内联编辑。但是@nmc 建议的另一个模块可以做到这一点。它的editablefields。但它没有任何编辑/删除按钮。您直接单击视图中的文本(前提是用户具有编辑字段数据的适当权限)。

如果您要使用可编辑字段,则必须在视图中添加另一个删除按钮,一个确认将重定向到触发删除操作的页面。

由于删除按钮会重定向到默认确认页面,您可能需要编写一个自定义删除操作来覆盖此操作。

  1. 在页脚中应该有一个用于添加新抄表的链接,当用户单击它时,应该会出现一个新的空白行 动态添加到表中,用户应该能够制作 新条目。

我建议创建一个小的 ajax 表单。在其中创建一个“添加抄表”按钮,提交时将在服务器中创建一个抄表节点。 ajax 表单应该在隐藏字段中包含父信息(即 Meter id)。此表单的 ajax 响应可能是另一个在客户端加载/刷新视图的脚本。

刷新视图的客户端代码可以在 Views Hacks 的 Views Autorefresh 子模块中找到。

如果使用视图 megarow,您必须在视图刷新后在 ajax 响应上添加另一个 jquery 函数 - 触发编辑按钮。 否则,您可能必须向新创建的行添加一些类或主题,以使它们成为焦点。

刷新整个视图很重要,以便将drupal行为附加到表中新创建的条目。

【讨论】:

  • 感谢您的回答.. Views MegaRow 为我解决了问题...荣誉!!
  • @D34dman 我正在使用视图自动刷新,它工作正常,但我不希望它自动更新视图。相反,当有新项目时,它应该在视图上方显示一个“新项目”链接,当用户单击它时,视图或块会通过 ajax 更新。该视图中已启用 Ajax。你可以在这里回答drupal.stackexchange.com/questions/233496/…
【解决方案2】:

我不知道是否有一个模块可以满足您的所有需求,但您可以组合使用一些模块。

Views Bulk Operations (VBO) - 支持 Drupal 7

此模块通过允许执行批量操作来增强视图 在显示的行上。它通过在前面显示一个复选框来实现 每个节点,并添加一个包含操作的选择框 应用。可以使用 Drupal Core 或规则操作。

editablefields - 开发中的 Drupal 7 版本

此模块允许在节点的显示上编辑 CCK 字段(例如 在 node/123 上),而不仅仅是在节点编辑页面上(例如 node/123/edit)。它 也适用于视图等。可以选择“格式化程序”的任何地方, 您可以选择可编辑(或点击编辑)。

editview - 尚不支持 Drupal 7,但我想我会提一下,以防您自己修改代码

Editview 是 Views 模块的插件。它允许您创建一个 节点可编辑的视图,并且可以创建新节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多