【问题标题】:Programmatically update CCK List allowed values on an ajax callback attached to a dependent field以编程方式更新附加到依赖字段的 ajax 回调上的 CCK 列表允许值
【发布时间】:2014-06-02 15:45:03
【问题描述】:

嗨,我真的很困惑。我一直在努力让它工作一段时间,并且几乎把我的大部分头发都拔掉了!..

我有一个 CCK 列表(文本)选择字段,其中的选项是根据另一个字段的值使用 ajax 填充的。问题是,我没有为选择字段设置任何“允许值”,因为它们是在表单完成期间以编程方式填充的。这会导致以下问题:

  1. 即使列表元素设置为“无限”,也只能选择 1 个值
  2. 保存表单出现非法选择错误
  3. 编辑表单不会设置默认值

我理解为什么会发生这种情况,但不知道如何以干净的方式解决它。 我曾尝试在 ajax 调用期间更新字段允许的值,但随后我得到“具有现有数据的列表字段 ___ 不能更改其键。”

谢谢

【问题讨论】:

    标签: drupal drupal-7 cck form-api


    【解决方案1】:

    好的,我设法让这个工作.. 我已经实现的是根据另一个包含 ajax 回调的字段的值动态更新现有 CCK 字段的选择列表值,以使用更新的值重新渲染 CCK 字段。

    现在,如果使用表单 API 从头开始​​创建表单/元素,这将是小菜一碟,但有时在使用实体和现有字段时,这不是一个选项。

    简而言之,我做了以下事情:

    1. 更新字段设置以使用 allowed_values_function
    2. 实现填充CCK字段列表的自定义函数
    3. 使用 get/set_variable 在 ajax 调用之间存储允许的值
    4. 使用 hook_field_attach_validate 删除任何“非法选择”。 core list.module 产生的错误

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2020-03-28
      • 2022-01-02
      相关资源
      最近更新 更多