我使用DateTimeType创建了表单类型。 我将datetime分为2个小部件(文本输入)。
如何使用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>
答案 0 :(得分:1)
目前,无法定义特定属性,例如&#34; class&#34;只有一个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']
]);