CheckboxSetField 的 Silverstripe 多对多关系

Silverstripe many-many relationship for CheckboxSetField

我有一个 CheckboxSetField,数字为 1 - 10。我还设置了一个多对多关系,该关系会随数字更新。

虽然我可以 select 号码没问题,但在提交后再次拨打这些 select 号码时遇到问题。

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)

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

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

如果数组是:

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

似乎有效。

我是不是漏掉了什么?

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

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

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

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

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