我有一个使用multiform模块的表单。我有一个由数据对象填充的checkboxsetfield。
保存表单时,我得到了奇怪的结果。例如,如果我选择第一个和第三个复选框,那么这就是数组在数据库中的显示方式:1 {逗号} 3当我希望看到1,3
MyDataObject.php
<?php
...
if($SomeData = DataObject::get('SomeData')->sort('SortColumn'){
$fields->push( new CheckboxSetField('SomeData', 'Field Name', $SomeData->map('ID', 'Name')
));
}
MultiForm.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();
}
}
...
如何处理数组的任何想法?
答案 0 :(得分:1)
CheckboxSetField
确实有代码在保存到数据库或调用{comma}
函数时引用dataValue
。这基本上是在保存到单个列时转义在字符串中定义为值的任何逗号。
这告诉我,您的多种形式不能为CheckboxSetField
提供正确的输入,或者这种情况比代码显示的更多。
如果CheckboxSetField
获得类似array('1,3')
的数组,那就是我期望看到这种类型的结果。像你一样调用map
会返回一个SS_Map
对象,该对象可能无法自动转换您的预期方式。将值传递到->toArray()
时,请尝试在map
调用后添加CheckboxSetField
。
如果这还没有解决问题,我们可能需要查看DataObject
本身以及其他一些信息。