2012-09-10 12 views
6

Ho appena aggiornato il mio progetto Symfony 2.0.12 a 2.1. Inoltre ho installato FosUserBundle, ma quando ho eseguito il comandoRegistrationFormType :: buildForm() non compatibile

php composer.phar update 

poi compositore uscita un errore:

Loading composer repositories with package information 
Updating dependencies 
Writing lock file 
Generating autoload files 
PHP Fatal error: Declaration of User\UserBundle\Form\Type\RegistrationFormType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm() in /home/mark/dev/proj/src/User/UserBundle/Form/Type/RegistrationFormType.php on line 38 

Fatal error: Declaration of User\UserBundle\Form\Type\RegistrationFormType::buildForm() must be compatible with that of Symfony\Component\Form\FormTypeInterface::buildForm() in /home/mark/dev/proj/src/User/UserBundle/Form/Type/RegistrationFormType.php on line 38 
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-update-cmd event terminated with an exception 

E' dice qualcosa che la mia RegistrationFormType precedente non è compatibile con la nuova interfaccia modulo Symfony 2.1.

mio composer.json

// ... 
"friendsofsymfony/user-bundle": "*", 
//... 

mio RegistrationFormType.php

<?php 

namespace User\UserBundle\Form\Type; 

use Symfony\Component\Form\FormBuilderInterface; 
use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; 

class RegistrationFormType extends BaseType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     parent::buildForm($builder, $options); 
     // add your custom field 
     $builder->add('name') 
       ->add('surname') 
       ->add('gender', 'choice', array(
        'choices' => array('m' => 'Male', 'f' => 'Female'), 
        'empty_value' => 'Please select', 
       )) 
       ->add('address') 
       ->add('zip') 
       ->add('country', 'country', array(
        'empty_value' => 'Please select', 
       )) 
      ->add('dateOfBirth', 'date', array(
       'empty_value' => '', 
       'years' => range(date('Y')-100, date('Y')), 
      )) 
      ->add('agree', 'checkbox', array(
       'label'  => 'Check here to agree to the sites terms and Conditions and Data Privacy Policy.', 
      )); 
    } 

    public function getName() 
    { 
     return 'user_user_registration'; 
    } 
} 

Qualsiasi idea di ciò che è sbagliato?

risposta

17

tuo metodo buildFOrm utilizza il vecchio schema .. questo ha cambiato:

public function buildForm(FormBuilderInterface $builder, array $options) 

garantire anche di includere il nuovo ..

use Symfony\Component\Form\FormBuilderInterface; 
+0

Grazie. Funziona. – repincln

Problemi correlati