2016-08-19 15 views
1

DateTimeTypeでフォームタイプを作成しました。 私はdatetimeを2つのウィジェット(テキスト入力)に分けました。SymfonyのDateTimeType入力テキストattr(date_widgetとtime_widget)

attrオプションを使用してテキスト入力をフォーマットするにはどうすればよいですか? (日付ウィジェットに日付クラスを追加し、タイムウィジェットにタイムクラスを追加したい)

どうすれば別にそれを検証できますか?

 $builder->add('valid_to', DateTimeType::class, 
        array( 'required'=>false, 
          'label'=>'Valid vége', 
          'html5'=>false, 
          'date_widget' => 'single_text', 
          'time_widget' => 'single_text', 
          'format'=>'yyyy-MM-dd HH:mm', 
          'constraints'=>array( new DateTime(array("message"=>"Invalid datetime. [need: yyyy-mm-dd] [hh:mm]")), 
          ), 
          'attr'=>array('class'=>'datetimepicker', 
          ))); 

この

は、HTML応答である:現在

<div id="email_template_content_valid_to" class="datetimepicker"> 
    <input type="text" id="email_template_content_valid_to_date" name="email_template_content[valid_to][date]" value="2016-08-24" /> 
    <input type="text" id="email_template_content_valid_to_time" name="email_template_content[valid_to][time]" value="00:00" /> 
</div> 

答えて

1

、それだけで1 DateTimeTypeのウィジェット(@see https://github.com/symfony/symfony/issues/11824

のに "クラス" などの特定の属性を定義することはできませんたとえば、まだテストされていない、時間や日付ウィジェットの特定のオプションを渡すために独自のDateTimeTypeクラスを定義しなければなりません:

// Symfony\Component\Form\Extension\Core\Type\DateTimeType 

// Only pass a subset of the options to children 
$dateOptions = array_intersect_key($options, array_flip(array(
    'years', 
    'months', 
    'days', 
    'empty_value', 
    'placeholder', 
    'required', 
    'translation_domain', 
    'html5', 
    'invalid_message', 
    'invalid_message_parameters', 
    'date_attr' // <= attr for date widget 
))); 

$timeOptions = array_intersect_key($options, array_flip(array(
    'hours', 
    'minutes', 
    'seconds', 
    'with_minutes', 
    'with_seconds', 
    'empty_value', 
    'placeholder', 
    'required', 
    'translation_domain', 
    'html5', 
    'invalid_message', 
    'invalid_message_parameters', 
    'time_attr' // <= attr for time widget 
))); 

$builder->add('valid_to', DateTimeType::class, [ 
    'required' => false, 
    'label'  => 'Valid vége', 
    'html5'  => false, 
    'date_widget' => 'single_text', 
    'time_widget' => 'single_text', 
    'format'  => 'yyyy-MM-dd HH:mm', 
    'constraints' => [ 
     new DateTime(["message" => "Invalid datetime. [need: yyyy-mm-dd] [hh:mm]"]), 
    ], 
    'date_attr' => ['class' => 'my_date_class'], 
    'time_attr' => ['class' => 'my_time_class'] 
]); 
関連する問題