我創建了一個自定義的Drupal模塊,現在想保存一些首選項。這些基本上是3個字符串數組,應該被保存並且也很容易被(管理)用戶編輯。首選項和Drupal中不錯的管理界面
在Drupal中最好的方法是什麼?我已閱讀variable_set
和variable_get
,是否適合存儲像這樣的模塊特定的數據?
有什麼方法可以輕鬆創建管理員窗體來編輯這些變量,還是我必須從頭開始編寫?
我創建了一個自定義的Drupal模塊,現在想保存一些首選項。這些基本上是3個字符串數組,應該被保存並且也很容易被(管理)用戶編輯。首選項和Drupal中不錯的管理界面
在Drupal中最好的方法是什麼?我已閱讀variable_set
和variable_get
,是否適合存儲像這樣的模塊特定的數據?
有什麼方法可以輕鬆創建管理員窗體來編輯這些變量,還是我必須從頭開始編寫?
如果您想快速使用,請使用variable_get/set和system_settings_form()。
需要比評論更多的空間。 @yorirou有正確的答案。但是,要存儲/檢索每個由不同窗口小部件輸入的字符串數組,可以使用以下簡單路徑:
將所有內容用#tree屬性包裝在字段集中。該字段集中的所有字段將被摺疊到基於變量名的字段集名稱和鍵值的單個字段名稱構成的數組中。數組序列化在variable_get/set上自動處理。
$form['custom_settings'] = array(
'#title' => t('My settings'),
'#type' => 'fieldset',
'#tree' => TRUE,
);
$form['custom_settings']['first_setting'] = array(
'#type' => 'textfield',
// etcetera
);
$form['custom_settings']['second_setting'] = array(
'#type' => 'textfield',
// etcetera
);
在保存陣列的輸出,你會得到這樣的事情:
custom_settings = Array(
'first_setting' => 'some string',
'second_setting' => 'some other string',
)
你可以得到一個#validate處理器相同的影響,或在陣列形式使用#parents元素,但這些需要額外的工作來糾纏默認值。
謝謝,這看起來完全像我需要的。但是,我使用哪個表單元素作爲字符串數組?我可以只使用一個文本字段,Drupal會找出其餘的(多個文本字段和序列化/反序列化變量)? – 2010-09-22 11:43:01
如果你需要多個文本框,就像cck那樣 – tamasd 2010-09-22 11:50:36