0

嗨,我真的很困惑。我一直试图让这个工作一段时间,并且几乎把我的大部分头发都拉了出来!..

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

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

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

谢谢

CCK 列表以编程方式填充

4

1 回答 1

0

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

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

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

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