1 つの方法は、データベースにすべての状態を含むテーブルを作成し、それをフォームで読み取ることです。あなたの意見でもっと簡単な方法はありますか?
初歩的なことなので、このようなことを求めるのは申し訳ありませんが、このような単純なものは Drupal ですでに実装されていると思います。
1 つの方法は、データベースにすべての状態を含むテーブルを作成し、それをフォームで読み取ることです。あなたの意見でもっと簡単な方法はありますか?
初歩的なことなので、このようなことを求めるのは申し訳ありませんが、このような単純なものは Drupal ですでに実装されていると思います。
データベースにアクセスする必要はありません。状態の配列を返す関数を自分で作成します。
$form['state'] = array(
'#type' => 'select',
'#options' => mymodule_states_list(),
'#title' => t('State'),
);
function mymodule_states_list() {
return array(
'AL' => 'Alabama',
'AK' => 'Alaska',
...
'WY' => 'Wyoming',
);
}
または、フラットファイルに保存して読み込みます。例:
フラットファイル=
$us_states_options = array(
'AL' => 'Alabama',
'AK' => 'Alaska',
//...etc
)
働き:
include_once(drupal_get_path('module', 'module_name') .'/us_states.inc');
すべてかなり醜いですが、少なくともそのファイルを個別に編集することができ、より大きなリストがある場合はうまくいく可能性があります。exec、fgetcsv / fileなどを使用して、リストを含めることができる方法は無数にあります。
しかし、 ceejayozソリューションが最も優れていると思います。私はおそらく、それらの種類のユーティリティ関数を別のインクルードにスピンアウトして、自分自身をクリーンに保つでしょう。
Geonames モジュールを試していたときに、この質問を思い出しました。他の多くの機能の中でも、Geonames には関数「geonames_us_states()」が含まれています。これは、州の 2 文字のコードをキーにした米国の州の配列を返します。
Drupal の FormAPI を使用してフォームを作成している場合は、モジュール コードに状態の配列を含めることができます。これは、名前と略語がすぐには変更されないためです。
コードをクリーンに保ちたい場合は、variable_set() を使用して状態の配列を Drupal 変数として保存し、variable_get() を使用してそれを取得できます。そのようなことのためにデータベースを気にする必要はありません。
それは確かにそれを行う1つの方法です。状態のリストを変数として保存し、呼び出すことができます。
$options = variable_get('mymodule_us_states', 0);
配列である限り。状態を返す内部関数を使用することもできます。
国コード APIモジュールは、米国の州を含む地域コード API モジュールも提供します。このモジュールを使用すると、 を呼び出して Form API の select 要素に適した配列を取得できますregions_api_iso2_get_options_array('US')
。