1

我知道一种方法是在数据库中有一个包含所有状态的表,然后你会以你的形式阅读它。你认为有没有更简单的方法?

我觉得要求这样的东西很糟糕,因为它是如此基本,但是我想像这样简单的东西已经在 Drupal 中实现了。

4

6 回答 6

2

无需访问数据库。自己构建一个返回状态数组的函数。

$form['state'] = array(
  '#type' => 'select',
  '#options' => mymodule_states_list(),
  '#title' => t('State'),
);

function mymodule_states_list() {
  return array(
    'AL' => 'Alabama',
    'AK' => 'Alaska',
    ...
    'WY' => 'Wyoming',
  );
}
于 2010-06-14T03:59:21.543 回答
0

如果您使用 Drupal 的 FormAPI 构建表单,您可以在模块代码中包含状态数组,因为名称和缩写不会很快改变。

如果您想保持代码干净,您可以使用 variable_set() 将状态数组保存为 Drupal 变量,然后使用 variable_get() 检索它。你真的不需要为这种事情操心数据库。

于 2010-06-14T03:59:46.313 回答
0

当然,这是一种方法。您可以将状态列表存储为变量,然后调用它。

$options = variable_get('mymodule_us_states', 0);

只要它是一个数组。您还可以有一个返回状态的内部函数。

于 2010-06-14T04:00:22.803 回答
0

或者将其存储在一个平面文件中并读入。例如

平面文件 =

$us_states_options = array(
 'AL' => 'Alabama',
 'AK' => 'Alaska',
//...etc
)

功能:

include_once(drupal_get_path('module', 'module_name') .'/us_states.inc');

一切都很丑陋,但您至少可以独立编辑该文件,如果您有一个更大的列表,可能会很好用。有上百万种方法可以包含列表 - 使用 exec、fgetcsv/file 等....

但我认为ceejayoz解决方案是最好的。我可能会将这些实用功能拆分为单独的包含以保持自己的清洁。

于 2010-06-14T09:56:21.410 回答
0

国家代码 API模块还提供了一个地区代码 API 模块,其中包括美国各州。使用此模块,您可以通过调用来获取适合 Form API 选择元素的数组regions_api_iso2_get_options_array('US')

于 2010-06-15T06:21:00.803 回答
0

只是在我尝试使用 Geonames 模块时才想起这个问题。在众多其他功能中,Geonames 包括函数“geonames_us_states()”,该函数返回由州的两个字母代码键入的美国州数组。

于 2010-06-21T11:14:43.463 回答