2013-07-23 22 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'類型? –

相關問題