gpt4 book ai didi

php - SilverStripe - 将 CheckboxsetField 与 MultiForm 模块结合使用

转载 作者:搜寻专家 更新时间:2023-10-31 21:31:02 25 4
gpt4 key购买 nike

我有一个使用多表单模块的表单。我有一个由数据对象填充的复选框集字段。

保存表格时我得到了奇怪的结果。例如,如果我选择第一个和第三个复选框,那么这就是数组在数据库中的显示方式:1{comma}3 当我希望看到 1,3

MyDataObject.php

<?php
...
if($SomeData = DataObject::get('SomeData')->sort('SortColumn'){
$fields->push( new CheckboxSetField('SomeData', 'Field Name', $SomeData->map('ID', 'Name')
));
}

多表单.php

<?php
...

public function finish($data, $form){

if(isset($_SESSION['FormInfo']['MultiForm']['errors'])){
unset($_SESSION['FormInfo']['Form']['errors']);
}

parent::finish($data, $form);

$steps = DataObject::get('MultiFormStep', "SessionID = {$this->session->ID}");

$MyStep = $this->getSavedStepByClass('MyStep');

if($this->getSavedStepByClass('MyStep')){
if($MyStep->loadData()){
$MyDataObject = new MyDataObject();
$MyStep->saveInto($MyDataObject);
$MyDataObject->write();
}
}
...

对如何处理数组有什么想法吗?

最佳答案

CheckboxSetField确实有引用 {comma} 的代码保存到数据库或调用 dataValue 时功能。这实质上是在保存到单个列时转义在字符串中定义为值的任何逗号。

这告诉我,要么您的 multiform 没有为 CheckboxSetField 提供正确的输入,要么这种情况比您的代码显示的更多。

如果 CheckboxSetField 得到一个像 array('1,3') 这样的数组,那是我希望看到那种类型的结果的时候。像你一样调用 map 返回 SS_Map可能不会自动转换为您期望的方式的对象。当您将值传递到 CheckboxSetField 时,尝试在 map 调用之后添加 ->toArray()

如果这不能解决问题,我们可能需要查看 DataObject 本身和其他一些信息。

关于php - SilverStripe - 将 CheckboxsetField 与 MultiForm 模块结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30026520/

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