2016-12-19 26 views
1

我有一個CheckboxSetField與數字1 - 10.我也有一個許多關係設置,用數字更新。Silverstripe CheckboxSetField多關係

儘管我可以選擇數字沒有問題,但在提交後再次調用這些選定的數字時遇到問題。

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似乎只包含數字作爲值,但您需要鍵和值。

可以實現,使用array_combine,例如:

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

提示:創建數字範圍,你可以使用range功能,所以你能縮短setSource代碼:

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

非常感謝,這有助於! – Craig

+0

關於這件事還有一件事。有沒有理由爲什麼當我取消選擇一個選項時,它不會更新除數字1以外的數據庫?當1被取消選中時,它將從數據庫中刪除,但一旦頁面重新加載,將再次檢查其他任何數字。謝謝 – Craig

+0

「Numbers」是你的'many_many'關係嗎?如果不知道你的設置,我無法幫助你。 – bummzack