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

ご注意

Symfony2日本語翻訳ドキュメントは内容が古くなっております。公式サイトの英語ドキュメントを参照してください。

Note

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

money フィールドタイプ

テキストフィールドを表示し、送信された通貨情報を取り扱うことに特化しています。

このフィールドタイプはテキストフィールドの横に表示される通貨記号を指定することができます。データの入出力の処理方法をカスタマイズするための他のいくつかのオプションもあります。

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

フィールドオプション

currency

データ型: string デフォルト: EUR

お金が特定される通貨を指定します。これはテキストボックスによって表示されるべき通貨記号を決定します。通貨によって通貨記号はテキストフィールドの前か後に表示されます。

これは 3 letter ISO 4217 code の中の任意のものです。 false にして通貨記号を隠すことも出来ます。

divisor

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

何らかの理由で、表示前に開始値を除算する必要がある場合は、 divisor オプションを使用することができます。 例:

$builder->add('price', 'money', array(
    'divisor' => 100,
));

上記の場合で price フィールドに 9900 がセットされたら、実際には 99 が表示されます。ユーザーが値として 99 を送信したとき、 100 が掛けられ、結果として 9900 がオブジェクトに戻されます。

precision

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

何らかの理由で、小数点第2位以外が必要な場合、この値を変更することが出来ます。たとえば(精度を0にして)最も近いドルに切り上げしたいという以外、必要ないでしょう。

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