2016-01-21 15 views
8

Contesto:Symfony CRUD editto: Impossibile caricare il tipo "datetime"

ho creare un progetto con symfony 3. Il mio database ha una tabella con un campo datetime

Con questo comandi creo una semplice applicazione CRUD per una tabella

php bin/console doctrine:mapping:import --force adminBundle xml 

php bin/console doctrine:mapping:convert annotation ./src 

php bin/console doctrine:generate:entities adminBundle 

php bin/console generate:doctrine:crud 

Errore:

Quindi il mio CRUD è fatto, ma quando posso modificare una riga genera un errore

Could not load type "datetime" 500 Internal Server Error - InvalidArgumentException

Stack Trace

in vendor/symfony/symfony/src/Symfony/Component/Form/FormRegistry.php at line 87 

penso che non poteva caricare il tipo “datetme”, cerco di registrare la mia forma in la sezione servizi del mio services.yml, ma non so come si fa? per il tipo datetime.

Qualche idea? Grazie in anticipo.

risposta

22

Sembra un errore nel generatore CRUD. Si utilizza un tipo alias anziché il nome completo della classe:

$builder->add('fieldName', 'textarea'); 

Il nome completo della classe è richiesto dal Symfony 3.0:

$builder->add('fieldName', DateTimeType::class); 

prega di controllare il tipo di modulo generato.

+2

Grazie! Sembra che il generatore di symfony 3 non stia usando FQCN automaticamente .... È un bug. Andando a segnalare che :) –

+1

Qual è lo spazio dei nomi completo di DatetimeType? –

+1

Symfony \ Component \ Form \ Extension \ Core \ Type \ DateTimeType – Filo

2

Sergey, grazie per averlo indicato. Non sono sicuro del perché, ma specificare il nome completo della classe non ha risolto il problema da parte mia. Rimuovendo l'alias datetime tutti insieme ha fatto.

Modificato:

$builder 
    ->add('name') 
    ->add('time', 'datetime') 
    ->add('location') 
; 

A:

$builder 
    ->add('name') 
    ->add('time') 
    ->add('location') 
; 
+2

Prova ad importare prima la classe DateTime "usa Symfony \ Component \ Form \ Extension \ Core \ Type \ DateTimeType;" e poi "$ builder-> aggiungi ('time', DateTimeType :: class)" – Oleg

-1

symfony 3.0V php 5.6V

Symfony\Component\Form\Extension\Core\Type\DateTimeType;

->add('perfecnacimiento', DateTimeType::class)

+0

Le buone risposte su StackOverflow devono includere una spiegazione, non solo il codice. – yakatz

Problemi correlati