gpt4 book ai didi

drupal - drupal 7 自定义字段中的所见即所得

转载 作者:行者123 更新时间:2023-12-02 01:19:58 24 4
gpt4 key购买 nike

我正在尝试在 drupal 7 中构建自定义字段。除了所见即所得字段之外,一切都工作得很好。我正在使用下一个代码来构建所见即所得元素:

$element['my_body'] = array(
'#title' => t('Editor'),
'#type' => 'text_format',
'#tree' => true,
'#rows' => 20,
'#format' => 'filtered_html',
);

当它不是所见即所得(常规文本区域)时,所有保存都很好,但是在我将其更改为text_format之后,drupal将字段的值获取为带有2个键(值和格式)的数组,这在drupal保存时出错字段的值。据我了解,drupal 期望获得的是两个不同的值(body_filter 和格式),而不是具有 2 个键(值和格式)的 body_filter 数组。

任何人都可以给我提示如何解决这个问题(在 google 和 drupal.org 中找不到任何相关内容)?

谢谢。

最佳答案

我遇到了同样的问题,并找到了解决方案,感谢 Berdir 的提示。

正如您提到的“text_format”返回一个包含两个值的数组,例如:

$items[0]['MY_WYSIWYG_FIELD'] = array(
'value' => 'some text.',
'format' => 'filtered_html'
);

使用 hook_field_presave() 我能够准备值以将其保存到我的数据库中。

由于我不想保存格式值,我只是从 ['MY_WYSIWYG_FIELD'] 数组中提取文本值,并将该数组替换为提取的值:

$items[0]['MY_WYSIWYG_FIELD'] = 'some text.';

我的钩子(Hook)看起来像这样:

function MY_FIELD_MODULE_field_presave($entity_type, $entity, $field, $instance, $langcode, &$items) {
if ($field['type'] == 'MY_FIELD_TYPE') {
foreach ($items as $delta => $item) {
if (isset($item['MY_WYSIWYG_FIELD'])) {
$value = $item['MY_WYSIWYG_FIELD']['value'];
$items[$delta]['MY_WYSIWYG_FIELD'] = $value;
}
}
}
}

希望这有帮助!

关于drupal - drupal 7 自定义字段中的所见即所得,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6241710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com