1

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

または、フラットファイルに保存して読み込みます。例:

フラットファイル=

$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

Geonames モジュールを試していたときに、この質問を思い出しました。他の多くの機能の中でも、Geonames には関数「geonames_us_states()」が含まれています。これは、州の 2 文字のコードをキーにした米国の州の配列を返します。

于 2010-06-21T11:14:43.463 に答える
0

Drupal の FormAPI を使用してフォームを作成している場合は、モジュール コードに状態の配列を含めることができます。これは、名前と略語がすぐには変更されないためです。

コードをクリーンに保ちたい場合は、variable_set() を使用して状態の配列を Drupal 変数として保存し、variable_get() を使用してそれを取得できます。そのようなことのためにデータベースを気にする必要はありません。

于 2010-06-14T03:59:46.313 に答える
0

それは確かにそれを行う1つの方法です。状態のリストを変数として保存し、呼び出すことができます。

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

配列である限り。状態を返す内部関数を使用することもできます。

于 2010-06-14T04:00:22.803 に答える
0

国コード APIモジュールは、米国の州を含む地域コード API モジュールも提供します。このモジュールを使用すると、 を呼び出して Form API の select 要素に適した配列を取得できますregions_api_iso2_get_options_array('US')

于 2010-06-15T06:21:00.803 に答える