Home | Symfony2Doc »リファレンスドキュメント »Form Type リファレンス »number フィールドタイプ

コンテンツ上部に更新日の記載のないページは、翻訳の内容が2.0相当のものになっております。最新の内容は原文のページをご確認ください。

Note

  • 対象バージョン:2.4 (2.0以降)
  • 翻訳更新日:2013/12/14

number フィールドタイプ

テキストフィールドを表示し、数値入力の処理に特化しています。このタイプは精度、端数処理、グループ化についていくつかのオプションを提供しています。

対応するタグ input text フィールド
オプション
継承された オプション
親タイプ form
クラス NumberType

フィールドオプション

precision

データ型: integer デフォルト: ロケール固有 (一般には 3 前後)

フィールドが送信された値を小数点いくつまで丸めることが許されるかを指定します( rounding_mode を介して)。 たとえば、 precision2 、送信された値が 20.123 の場合、( rounding_mode に応じて)たとえば 20.12 に丸められます。

rounding_mode

データ型: integer デフォルト: NumberToLocalizedStringTransformer::ROUND_HALFUP

( precision オプションに基づいて)送信された数字の端数処理をする必要がある場合、さまざまな端数処理の設定オプションを持ちます。それらは NumberToLocalizedStringTransformer クラスの定数です。:

  • NumberToLocalizedStringTransformer::ROUND_DOWN 0 に向けて丸めます。
  • NumberToLocalizedStringTransformer::ROUND_FLOOR 負の無限大に向かって丸めます。
  • NumberToLocalizedStringTransformer::ROUND_UP 小数点以下切り上げます。
  • NumberToLocalizedStringTransformer::ROUND_CEILING 正の無限大方向に丸めます。
  • NumberToLocalizedStringTransformer::ROUND_HALF_DOWN 「もっとも近い数字」 に丸めます。両方から等距離にある場合、切捨てします。
  • NumberToLocalizedStringTransformer::ROUND_HALF_EVEN 「もっとも近い数字」 に丸めます。両方から等距離にある場合、末尾が偶数のほうに丸めます。
  • NumberToLocalizedStringTransformer::ROUND_HALF_UP 「もっとも近い数字」 に丸めます。両方から等距離にある場合、切り上げます。

grouping

データ型: integer デフォルト: false

PHP の NumberFormatter クラスを利用している場合、この値は NumberFormatter::GROUPING_USED として内部的に使われています。この文書は存在しませんが、これを true にセットした場合、数値は(ロケールによって)カンマまたはピリオドと合わせてまとめられます: 12345.12312,345.123 と表示されます。

継承されたオプション

以下のオプションは form タイプを継承しています:

required

データ型: Boolean デフォルト: true

trueの場合は HTML5 の required 属性 がレンダリングされます。 対応する label もまた required クラスをレンダリングします。

これらは表面的でバリデーションからは独立しています。Symfonyに フィールドタイプを推測することを許可する場合は、 このオプションの値はバリデーションの情報から推測されるのが理想的でしょう。

label

データ型: string デフォルト: フィールド名から推測されたものです。

フィールドがレンダリングされる際にラベルが設定されます。false が設定されるとラベルは表示されません。 ラベルはテンプレート内部で設定することもできます。

{{ render_label(form.name, 'Your name') }}

read_only

データ型: Boolean デフォルト: false

このオプションが true の場合、そのフィールドは readonly 属性付きでレンダリングされるため、編集する事が出来ません。

disabled

データ型: boolean デフォルト: false

ユーザにフィールドの値を変更させたくない場合は、 disabled オプションを true にします。どんなサブミットされた値も無視されます。

error_bubbling

データ型: Boolean デフォルト: false フォームに限り compound

true の場合、このフィールドのエラーは親フィールドまたはフォームに渡されます。 たとえば、通常のフィールドを true に設定した場合、フィールドに対するエラーは 特定のフィールドではなくメインのフォームに付加されます。

error_mapping

データ型: array デフォルト: empty

このオプションはバリデーションエラーの対象を編集することができます。

matchingCityAndZipCode という名前のメソッドを持っているとして、それが city および zip code が一致するかの検証をするとします。しかし残念なことに、 “matchingCityAndZipCode” フィールドがフォームに無いため、 Symfony ができるのはフォームの上部にエラーを表示することです。

カスタマイズされたエラーマッピングを使うと、city フィールドの上にエラーを表示するように、より上手にエラーをマップできます。:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'error_mapping' => array(
            'matchingCityAndZipCode' => 'city',
        ),
    ));
}

こちらが左側、右側のマッピングするルールです:

  • 左側はプロパティパスを有します。
  • クラスのプロパティまたはメソッドで違反が生成された場合、そのパスは単に “propertyName” です。
  • array または ArrayAccess オブジェクトで違反が生成された場合、プロパティパスは [indexName] です。
  • ドットでプロパティを分離し、それらを連結して、ネストされたプロパティパスを作成することができます。たとえば addresses[work].matchingCityAndZipCode のように。
  • 左側のエラーマッピングは単一のドット . も認められます。それはフィールド自体をさしています。フィールドに追加されたエラーはネストされたフィールドの代わりに付与されたことを意味します。
  • 右側は単にフォームのフィールド名を有します。

invalid_message

データ型: string デフォルト: This value is not valid

フィールドに入力されたデータが意味を成さない(すなわち、バリデーション失敗の)場合に使われるバリデーションエラーのメッセージです。

たとえば、時間に変換される time フィールドに無意味な文字を入れたときに、または、 number フィールドに文字列(例、 apple )を入れたときにおきます。

通常の(最小の文字数をセットするような)(ビジネスロジック)バリデーションはバリデーションメッセージをバリデーションルール( reference )とあわせて設定すべきです。

invalid_message_parameters

データ型: array デフォルト: array()

invalid_message オプションをセットする場合、文字列にいくつかの変数を取り込む必要があるかもしれません。プレースホルダーをそのオプションに加え、変数をこのオプションに含めることで可能です:

$builder->add('some_field', 'some_type', array(
    // ...
    'invalid_message'            => 'You entered an invalid value - it should include %num% letters',
    'invalid_message_parameters' => array('%num%' => 6),
));

mapped

データ型: boolean

オブジェクトを読み込んでいるまたは書き込んでいる間、フィールドが無視されるようにしたい場合は、 mapped オプションを false にしてください。

blog comments powered by Disqus