2015-11-25 165 views
1

我正在使用Bolt cms中的收音機/複選框替換選擇字段類型的擴展。我的問題是如何使用螺栓內部來存儲選定的值。如何在螺栓cms中存儲新的字段類型擴展的陣列

當我按下保存阿賈克斯POST數據:

day[]: Monday 
day[]: Friday 

因此,這是一樣的選擇字段。

我跟着這個教程:https://docs.bolt.cm/extensions/customfields 和使用

public function getStorageType(){ 
    return 'text'; 
} 

該字段的Ajax的保存請求的響應是數組,這就是進入數據庫。有趣的是,選擇字段不會出現在這個回覆中。我找不到選擇字段的數據存儲在應用程序代碼中的地方。

如何將它正確存儲到數據庫中? 使用getStorageType'json-array'會導致螺栓無法解決的錯誤數據庫方案。

您可以在這裏的代碼一看: https://github.com/osfriese/bolt-boxselect/tree/develope

請幫助。謝謝 Tobi

回答

0

我找到了解決方案 - 或多或少。

不幸的是它在src/Content.php中被硬編碼。 如果你想定製fieltype至極店數組值,你必須改變在功能選擇的情況下的GetValues到:

    default: 
         if (is_array($this->values[$field])) { 
          $newvalue[$field] = json_encode($this->values[$field]); 
         }else{ 
          $newvalue[$field] = $this->values[$field]; 
         } 
         break; 

而且在setValues方法有一個$ serializedFieldTypes =陣列(...)您必須手動添加自定義字段類型。

不幸的是,這對擴展並不實用。但是,我會更新我的github,併爲我想要查看的人改變Content.php。

當我在尋找解決方案時,我在github上查看了許多bolt master分支的源代碼。對於版本2.3,存儲層完全重建,看起來沒有必要進行任何更改。所以希望版本大於等於2.3,這個擴展就可以開箱即用。

儘管如此getStorageType()只是影響數據庫字段類型和螺栓只是在這裏接受'文本'。

希望我能通過回答我自己的問題來幫助一些人。

謝謝 Tobi