首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Bolt cms中存储新字段类型扩展的数组

如何在Bolt cms中存储新字段类型扩展的数组
EN

Stack Overflow用户
提问于 2015-11-25 20:48:28
回答 1查看 360关注 0票数 1

我正在开发一个扩展,用Bolt cms中的单选/复选框替换选择字段类型。我的问题是如何使用螺栓内部来存储选定的值。

当我按下保存时,Ajax POST数据:

代码语言:javascript
复制
day[]: Monday
day[]: Friday

因此,这与选择字段的情况相同。

我遵循了这个教程:https://docs.bolt.cm/extensions/customfields并使用了

代码语言:javascript
复制
public function getStorageType(){
    return 'text';
}

这个字段的ajax-save请求的响应是Array,这就是进入数据库的内容。有趣的是,选择字段不会出现在此响应中。我找不到app-code中存储select字段数据的地方。

如何正确地将其存储到数据库中?使用getStorageType 'json-array‘会导致错误的数据库方案,这是bolt无法解决的。

您可以在此处查看代码:https://github.com/osfriese/bolt-boxselect/tree/develope

请帮帮忙。谢谢托比

EN

回答 1

Stack Overflow用户

发布于 2015-11-30 20:12:55

我找到了解决方案-或多或少。

遗憾的是,它被硬编码在src/Content.php中。如果您需要存储数组值的自定义字段类型,则必须将function getValues中的select case更改为:

代码语言:javascript
复制
                    default:
                        if (is_array($this->values[$field])) {
                            $newvalue[$field] = json_encode($this->values[$field]);
                        }else{
                            $newvalue[$field] = $this->values[$field];
                        }
                        break;

setValues数组中有一个$serializedFieldTypes =(...)您必须手动添加自定义字段类型。

遗憾的是,这对于扩展来说并不实用。但我会用我修改过的Content.php更新我的github,让那些想看一看的人看看。

当我在寻找解决方案的时候,我在github上回顾了大量的螺栓主分支的源代码。对于2.3版本,存储层是完全重建的,并且看起来不需要任何更改。因此,希望在>=2.3版本中,扩展能够开箱即用。

然而,getStorageType()只影响数据库字段类型,而bolt在这里只接受'text‘。

希望我能通过回答我自己的问题来帮助一些人。

谢谢托比

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33916945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档