2013-07-23 7 views
7

Sto cercando di creare un selettore datetime riutilizzabile in symfony2. L'idea è che sarà composta da 3 parametri di input separati. Aggiornerò la domanda con informazioni complete in modo che altre persone possano utilizzare i miei risultati.symfony2 - datetime picker - combina tipi di moduli in uno

{input di testo {} selezionare l'ora} {} selezionare Ora

La domanda è: come faccio a creare una forma riutilizzabile personalizzato che combina 3 ingressi in uno.

Ho attaccato uno screenshot per dare un'idea di quello che im cercando di achive

enter image description here

la documentazione di symfony
http://symfony.com/doc/current/cookbook/form/create_custom_field_type.html#creating-a-template-for-the-field

risposta

13

È possibile utilizzare semplicemente jquery.datetime picker per mostrare un selettore di data/ora o solo uno di essi (data o ora).

ho recentemente fatto su uno dei miei siti web.

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

e chiamare jquery, datetime CSS e JS sulla tua pagina:

<link rel="stylesheet" type="text/css" href="jquery.datetimepicker.css"/ > 
<script src="jquery.js"></script> 
<script src="jquery.datetimepicker.js"></script> 

e datetimepicker poi attivo sul campo:

$(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

Come esempio si può vedere a DateTime campo. Controlla il source code.

In generale, creare prima lo Custom Form Type, che è possibile aggiungere ai moduli. A titolo di esempio

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

Seconda aggiungere Data Transformer ad esso, che trasformerà i dati html da 3 campo in un unico DateTime oggetto.

+0

grazie per il feedback penso im rubrica nella giusta direzione. Come posso implementare il tipo nel modulo. Ho provato e ottenere argomento previsto di tipo "oggetto, array o vuoto", "stringa". –

+0

Qual è il tuo tipo di entità 'custquote_pickup'? –

Problemi correlati