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

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

Note

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

time フィールドタイプ

時刻入力をするフィールドです。

これは1つのテキストフィールド、または、3つのテキストフィールド(例 時、分、秒)、または、一連のセレクトフィールドとして表示することができます。 元となるデータは DateTime オブジェクト、 stringtimestamp または array として保存することが出来ます。

対応するデータ型 DateTime, string, timestamp, array (参照 input オプション )
対応するタグ 様々なタグとして利用可能 (下記参照)
オプション
上書きされた オプション
継承された オプション
親タイプ form
クラス TimeType

基本的な使い方

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

startTime フィールドに DateTime オブジェクトの時間データを持つとします。 以下は、time タイプを2つの異なった選択フィールドとして設定します。:

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

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

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

フィールドは arraystring を正しい input オプションの値としてサポートします。

フィールドオプション

widget

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

このフィールドがレンダリングされるべき基本的な方法は次のいずれかになります。:

  • choice: with_minuteswith_seconds オプションに基づいて、1つ、または、2つ(デフォルト)または3つのセレクト入力( hour , minute , second )を表示します。
  • text: with_minuteswith_seconds オプションに基づいて、1つ、または、2つ(デフォルト)または3つのテキスト入力( hour , minute , second )を表示します。
  • single_text: 単一の time タイプの入力フォームを表示します。ユーザーの入力は hh:mm (または HH:MM:SS 秒を使用している場合) のフォームに対して検証されます。

Caution

ウィジェットタイプの single_textwith_minutes オプションを false とする組み合わせは、 入力タイプ time が時間のみ選択することをサポートしていない可能性があり、 クライアントで予期しない動作を引き起こす可能性があります。

input

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

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

  • string (例 12:17:26)
  • datetime (単一の DateTime オブジェクト)
  • array (例 array('hour' => 12, 'minute' => 17, 'second' => 26))
  • timestamp (例 1307232000)

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

New in version 2.2: with_minutes オプションは Symfony 2.2 で追加されました。

with_minutes

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

分を入力に含めるかどうか。これは分を取得する追加の入力フォームを出力します。

with_seconds

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

秒を入力に含めるかどうか。これは秒を取得する追加の入力フォームを出力します。

Note

  • 対象バージョン:2.3 (2.1以降)
  • 翻訳更新日:2013/11/24

hours

データ型: array デフォルト: 0 to 23

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

minutes

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

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

seconds

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

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

model_timezone

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

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

view_timezone

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

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

empty_value

データ型: string or Boolean

New in version 2.3: Symfony 2.3 から、 expanded オプションが true の場合でも空の値がサポートされました。

このオプションは特別な「空の」選択肢(例 “選択肢を選んで下さい” )がセレクトウィジェットの一番上に表示されるかどうかを決定します。このオプションは multiple オプションが false の場合にのみ適用されます。

  • テキストとして”選択肢を選んで下さい”との空の値を追加します。:

    $builder->add('states', 'choice', array(
        'empty_value' => '選択肢を選んで下さい',
    ));
    
  • 「空の」値の選択肢が表示されないことを保証します。:

    $builder->add('states', 'choice', array(
        'empty_value' => false,
    ));
    

empty_value を設定しないままで、 required オプションが false の場合にのみ空の選択肢(テキスト無し)が自動的に追加されます。:

// 空の選択肢(テキスト無し)が追加されます
$builder->add('states', 'choice', array(
    'required' => false,
));

上書きされたオプション

by_reference

デフォルト: false

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

error_bubbling

デフォルト: false

継承されたオプション

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

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

data

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

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

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

Note

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

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 オプションの値。
with_minutes Boolean with_minutes オプションの値。
with_seconds Boolean with_seconds オプションの値。
type string widgetsingle_text で、且つ、 HTML5 が有効な場合のみ、 インプットタイプ(datetime, date または time )を使用できます。
blog comments powered by Disqus