2012-09-10 3 views
6

Symfony 2.0.12 프로젝트를 2.1로 업그레이드하면됩니다. 또한 FosUserBundle를 설치,하지만 난RegistrationFormType :: buildForm() 호환되지 않음

php composer.phar update 

후 작곡가 출력 오류가 명령을 실행할 때 :

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 

그것은 '내 이전 RegistrationFormType 새로운 심포니 2.1 형태의 인터페이스와 호환되지 않는 것을 말한다.

내 composer.json

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

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

어떤 생각에 어떤 문제가 있습니까?

답변

17

당신의 buildFOrm 방법이 변경되었다 .. 기존의 스키마를 사용

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

도 ... 당신은 새로운 하나를 포함

use Symfony\Component\Form\FormBuilderInterface; 
+0

감사를 보장합니다. 그것은 작동합니다. – repincln