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)))
我有一个 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)))