我希望在 symfony2 中创建一个可重复使用的日期时间选择器。这个想法是它将由 3 个单独的输入参数组成。我将使用完整的信息更新问题,以便其他人可以使用我的发现。
{文本输入} {选择小时} {选择时间}
问题是如何创建将 3 个输入组合为一个的自定义可重用表单。
我附上了一个截图,让我了解我想要达到的目标
我希望在 symfony2 中创建一个可重复使用的日期时间选择器。这个想法是它将由 3 个单独的输入参数组成。我将使用完整的信息更新问题,以便其他人可以使用我的发现。
{文本输入} {选择小时} {选择时间}
问题是如何创建将 3 个输入组合为一个的自定义可重用表单。
我附上了一个截图,让我了解我想要达到的目标
您可以简单地使用jquery.datetime 选择器来显示日期时间选择器或仅显示其中一个(日期或时间)。
我最近在我的一个网站上制作。
$builder->add('dateheure', 'datetime', array('date_widget' => "single_text", 'time_widget' => "single_text"));
并在您的页面上调用 jquery、datetime css 和 js:
<link rel="stylesheet" type="text/css" href="jquery.datetimepicker.css"/ >
<script src="jquery.js"></script>
<script src="jquery.datetimepicker.js"></script>
然后在您的字段上激活 datetimepicker:
$(function(){
$("#form_dateheure input").each(function(){
$(this).attr("readonly","readonly");
});
$('#form_dateheure_date').datetimepicker({
format: "Y-m-d",
timepicker: false,
datepicker: true,
});
$('#form_dateheure_time').datetimepicker({
format: "H:i",
timepicker: true,
datepicker: false,
step:5
});
});
从广义上讲,首先创建自定义表单类型,当您可以将其添加到表单中时。例如
class DateTimeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('date', 'text');
$builder->add('hour', 'choice', array(...));
$builder->add('minute', 'choice', array(...));
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
}
public function getParent()
{
return 'form';
}
public function getName()
{
return 'date_time';
}
}
其次添加数据转换器,它将把你的 html 数据从 3 个字段转换为一个DateTime
对象。