对于Drupal开发者来说,善用system_settings_form这个东西,可以在一定程度上提升你的开发效率,并降低代码的维护成本。
该函数通常用在自定义模块,对一些用户自定义配置的保存。
下面以代码实例来解析该函数的用法。
//hook_menu function MYMODULE_menu() { $items = array(); $items['test'] = array( 'page callback' => 'drupal_get_form', 'page arguments => array('test_form'), 'access callback' => TRUE, ); return $items; } function test_form($form, $form_state) { $form['my_config'] = array( '#type' => 'textfield', '#title' => t('My config value'), '#default_value' => variable_get('my_config', NULL), ); $form['submit'] = array( '#type' => 'submit', '#value' => t('Save'), ); return system_settings_form($form); }
做完上面的事情,你就可以得到一个简易的配置表单。不需要做其他事情了。
当你在输入一个值并Save之后,该值会自动保存到数据库的variable表中。
my_config 对应着variable表的name字段,而文本框里面的值,则自动保存到对应的value字段中。
这样不需要自己定义表单的submit处理函数,不需要自己写variable_set来处理,是不是很方便?
同时如果需要在其他地方调用上面的表单保存的配置的值,只需简单的调用
variable_get('my_config', NULL);
即可取到。
使用这个方法,有个技巧,就是
'#default_value' => variable_get('my_config', NULL),
这里的精妙自己琢磨去。我刚开始学习这个方法,自己琢磨了半个小时才明白。
如果想理解这个函数的奥妙,自己看下源代码,如果对drupal的form比较了解,相信可以很快明白。
参考链接:
https://api.drupal.org/api/drupal/modules%21system%21system.module/func…
https://api.drupal.org/api/drupal/modules%21system%21system.module/func…