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

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

Note

  • 対象バージョン:2.3+
  • 翻訳更新日:2014/04/23

date フィールドタイプ

異なった様々な HTML 要素で日付情報を変更することができるフィールドです。

このフィールドタイプに使用される元となるデータは DateTime オブジェクト、 stringtimestamp または array です。 input オプションが正しく設定されている限り、フィールドはすべての詳細を引き受けます。

このフィールドは1つのテキストボックス、または、3つのテキストボックス(月、日、年)、または、3つのセレクトボックス(参照 widget オプション)として表示することができます。

対応するデータ型 DateTime, string, timestamp, array (参照 input オプション)
対応するタグ 単一のテキストボックス または、 3つのセレクトフィールド
オプション
上書きされた オプション
継承された オプション
親タイプ form
クラス DateType

基本的な使い方

このフィールドタイプは高度に設定が可能でありながら、簡単に使えます。最も重要なオプションは inputwidget です。

publishedAt フィールドに``DateTime`` オブジェクトの日付データを持つとします。 以下は、date タイプを3つの選択フィールドとして設定します。:

$builder->add('publishedAt', 'date', array(
    'input'  => 'datetime',
    'widget' => 'choice',
));

この input オプションは元となる日付データと同じタイプに変換され なくてはいけません 。 例えば、 publishedAt フィールドデータが Unix タイムスタンプの場合、inputtimestamp を設定しないといけません。:

$builder->add('publishedAt', 'date', array(
    'input'  => 'timestamp',
    'widget' => 'choice',
));

フィールドは arraystring を正しい input オプションの値としてサポートします。 The field also supports an array and string as valid input option values.

フィールドオプション

widget

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

フィールドの表示の基本的な方法です。次のいずれかになります。 The basic way in which this field should be rendered. Can be one of the following:

  • choice: 3つの選択フォームを表示します。選択の順序は、format オプションで定義されています。
  • text: 3つの text タイプの入力フィールド(月、日、年)をレンダリングします。
  • single_text: date タイプの単一の入力フォームをレンダリングします。ユーザーの入力は format オプションに基づいて検証されます。

input

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

input データのフォーマット、すなわち、対応するオブジェクトに保存される日付のフォーマットの有効な値は次のとおりです。:

  • string (例 2011-06-05)
  • datetime (単一の DateTime オブジェクト)
  • array (例 array('year' => 2011, 'month' => 06, 'day' => 05)`)
  • timestamp (例 1307276100)

フォームから戻って来る値も、この形式に戻して正規化されます。

Caution

timestamp を使用する場合、32bitシステムでは DateType は 1901年12月13日(金)20時45分54秒 (GMT) から 2038年1月19日(木)03時14分07秒(GMT) までの日時に限られます。 これは limitation in PHP itself によるものです。

empty_value

データ型: string または array

もし、ウィジェットのオプションが choice がセットされていた場合、一連のセレクトボックスとして表現されます。 empty_value オプションは”空”エントリーを各セレクトボックスの一番上に追加できます。:

$builder->add('dueDate', 'date', array(
    'empty_value' => '',
));

別の方法として、”空”の値として特定の文字を指定することが出来ます。:

$builder->add('dueDate', 'date', array(
    'empty_value' => array('year' => 'Year', 'month' => 'Month', 'day' => 'Day')
));

years

データ型: array デフォルト: 今年より5年前から5年後

year フィールドタイプに設定可能な年のリストです。このオプションは widget オプションに choice が設定されている場合のみ意味を持ちます。

months

データ型: array デフォルト: 1 to 12

month フィールドタイプに設定可能な月のリストです。このオプションは widget オプションに choice が設定されている場合のみ意味を持ちます。

days

データ型: array デフォルト: 1 to 31

day フィールドタイプに設定可能な日のリストです。このオプションは widget オプションに choice が設定されている場合のみ意味を持ちます。:

'days' => range(1,31)

format

データ型: integer または string デフォルト: IntlDateFormatter::MEDIUM ( widgetsingle_text の場合は yyyy-MM-dd )

ユーザーの入力を適切なフォーマットに変換するために使用され、オプションは IntlDateFormatter クラスに渡されます。 widget オプションが single_text に設定されている場合に重要であり、ユーザがどのようにデータを入力するのかを定義します。 デフォルトでは、フォーマットは現在のユーザーのロケールに基づいて決定さます。これは、 期待するフォーマットはユーザーごとに異なる ことを意味します。 文字列として書式を渡してオーバーライドすることができます。

有効なフォーマットの詳細については、 Date/Time Format Syntax を参照してください。:

$builder->add('date_created', 'date', array(
    'widget' => 'single_text',
    // これは single_text フォーマットの実際のデフォルトです。
    'format' => 'yyyy-MM-dd',
));

Note

HTML5の “date” フィールドとして表示したい場合、 single_text ウィジェットを yyyy-MM-dd ( RFC 3339 のフォーマット) のフォーマットで使用しなくてはいけません。 それは single_text ウィジェットを使用する場合のデフォルト値です。

model_timezone

データ型: string デフォルト: システムのデフォルトのタイムゾーン

保存されている入力データのタイムゾーン。これは PHP supported timezones の一つである必要があります。

view_timezone

データ型: string デフォルト: システムのデフォルトのタイムゾーン

ユーザーに表示されるデータのタイムゾーン(従って、ユーザーが送信するデータも)。これは PHP supported timezones の一つである必要があります。

上書きされたオプション

by_reference

デフォルト: false

DateTime クラスは不変のオブジェクトとして扱われます。

error_bubbling

デフォルト: false

継承されたオプション

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

data

データ型: mixed デフォルト: 対応するオブジェクトのフィールド(一つであれば)

フォームを作成したとき、各フィールドに表示する初期値は、フォームのドメインオブジェクトの対応するプロパティの値です(オブジェクトがフォームにバインドされている場合)。もしフォーム、または、単に個々のフィールドの初期値を上書きしたい場合は、data オプションで設定することが出来ます。:

$builder->add('token', 'hidden', array(
    'data' => 'abcdef',
));

Note

フォームのフィールドのデフォルト値は、直接データ構造(例えば、エンティティまたは配列)から取得されます。 data オプションはこのデフォルト値を上書きします。

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),
));

read_only

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

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

disabled

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

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

mapped

データ型: boolean

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

inherit_data

New in version 2.3: このオプションは Symfony 2.3 より前は virtual として知られていました。

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

フォームが親フォームからデータを継承する場合は、このオプションで決定します。複数のフォーム間で重複しているフィールドのセットを持っている場合に役立ちます。参照 “inherit_data”オプションを使用してコードの重複を減らす

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 のように。
  • 左側のエラーマッピングは単一のドット . も認められます。それはフィールド自体をさしています。フィールドに追加されたエラーはネストされたフィールドの代わりに付与されたことを意味します。
  • 右側は単にフォームのフィールド名を有します。

フィールド変数

変数 データ型 使用法
widget mixed widget オプションの値。
type string
widgetsingle_text で、且つ、 HTML5 が有効な場合のみ、
インプットタイプ(datetime, date または time )を使用できます。
date_pattern string 日付フォーマットの文字列
blog comments powered by Disqus