質問: array( '#type' => 'textfield', '#title' => t('number of seats'), '#required' => true, '#number_type' => 'decimal', '#field_name' => 'num_seats', '#element_validate' => array ('number_field_widget_validate'), '#field_parents' => array(), '#language' => $language->language, '#field_prefix' => '$', '#size' => 14, '#maxlength' => 12, '#default_value' => $location ? $location['num_seats'] : $node->field_workshop_num_seats[$node->language][0]['value'], ); ただし、フォームを送信すると、「preg_replace()[function.preg-replace]:コンパイルに失敗しました:number_field_widget_validate()のオフセット14の文字クラスの範囲が正しくありません(391行目)「number_type」に「decimal」ではなく「integer」を使用すると、正常に機能します。 numberモジュールのコードを確認したところ、フィールド定義から正規表現が正しく作成されていないことが原因であることがわかりました。だから私の質問は、提出がカスタムテーブルに保存されるカスタムフォームで、通常のdrupal entity_typeコンテキスト(つまり、ノード/ユーザーなどのフォームの外側)の外でフィールドを手動でレンダリングする方法です。
回答: 3年後に何かが変わったと思います。次のように、エラーなしで10進数フィールドを追加できました。'location_crossing_mileage' => array( '#type' => 'textfield', '#title' => t('mileage'), '#size' => 5, '#maxlength' => 12, '#number_type' => 'decimal', '#field_name' => 'location_crossing_mileage', '#element_validate' => array ('number_field_widget_validate'), ),