Silverstripe CheckboxSetField的多对多关系

时间:2016-12-19 08:16:53

标签: arrays checkbox many-to-many silverstripe

我有一个CheckboxSetField,数字为1 - 10.我也有很多关系设置,可以用数字更新。

虽然我可以选择号码没问题,但是一旦提交了这些号码,我就无法再次拨打这些号码。

CheckboxSetField::create("Numbers","Numbers")
            ->setSource(array("1" => "1",
                             "2" => "2",
                             "3" => "3",
                             "4" => "4",
                             "5" => "5",
                             "6" => "6",
                             "7" => "7",
                             "8" => "8",
                             "9" => "9",
                             "10" => "10",))
            ->setInline(true)
            ->addExtraClass("inline-checkbox")
            ->setDefaultItems($numberlist)

我设置了一个查询,将所有数字都返回setDefaultItems。 它将数字作为字符串返回,然后我将其转换为数组,但数组返回

Array ( [0] => 1 ) Array ( [0] => 2 ) Array ( [0] => 3 )

如果数组是:

(array("1" => "1", "2" => "2", "3" => "3"))

似乎有效。

我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

您的$numberlist似乎只包含数字作为值,但您需要键和值。

您可以使用array_combine来实现,例如:

->setDefaultItems(array_combine($numberlist, $numberlist))

提示:要创建数字范围,您可以使用range功能,这样您就可以将setSource代码缩短为:

->setSource(array_combine(range(1,10), range(1,10)))