2013-07-23 21 views
7

我期待在symfony2中创建一个可重用的datetime选择器。它的想法是由3个独立的输入参数组成。我会用完整的信息更新问题,以便其他人可以使用我的发现。symfony2 - 日期时间选择器 - 将表单类型合并为一个

{文本输入} {选择小时} {选择时间}

的问题是如何创建的自定义可重复使用的形式,结合3个输入为一体。

我附上截图给什么我尝试才达到

enter image description here

symfony的文档
http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html#creating-a-template-for-the-field

回答

13

您可以简单地使用jquery.datetime picker来显示日期时间选择器或只是其中的一个(日期或时间)。

我最近做了我的一个网站。

$builder->add('dateheure', 'datetime', array('date_widget' => "single_text", 'time_widget' => "single_text")); 

,并调用了jQuery,日期时间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 
    }); 
}); 
1

作为一个例子,你可以看到DateTime领域的想法。检查source code

一般来说,首先创建Custom Form Type,当您可以添加到您的表单。作为例子

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'; 
    } 
} 

二加Data Transformer它,将从3场变换你的HTML数据到一个DateTime对象。

+0

感谢您的反馈我认为,即时通讯的标题中正确的方向。如何将该类型实现到表单中。我已经尝试过并获得类型为“object,array或empty”,“string”的预期参数。 –

+0

什么是您的实体字段'custquote_pickup'类型? –

相关问题