2016-12-19 7 views
1

私はCheckboxSetFieldに1から10の数字があります。また、数字で更新される多数のリレーションシップの設定もあります。CheckboxSetFieldのSilverstripe many-manyリレーションシップ

数字は問題なく選択できますが、選択した番号をもう一度送信すると問題が発生します。

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")) 

動作するようです。

何か不足していますか?

答えて

2

あなたの$numberlistには値として数値だけが含まれているようですが、キーと値が必要です。

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

ヒント:あなたがあなたのsetSourceコードを短縮することができるように数値範囲を作成するために、あなたは、range機能を使用することができます。

->setSource(array_combine(range(1,10), range(1,10))) 
あなたは array_combineを使用して、例えば、それを達成することができます

+0

ありがとう、これは助けます! – Craig

+0

これについてもっともう1つ。オプションを選択解除すると、番号1以外のDBは更新されない理由はありますか? 1がチェックされていない場合、DBから削除されますが、ページがリロードされると、他の番号が再度チェックされます。ありがとう – Craig

+0

"Numbers"はあなたの 'many_many'関係ですか?私はあなたの設定を知らないと本当に助けることができません。 – bummzack

関連する問題