2012-09-10 12 views
6

Tôi chỉ cần nâng cấp dự án Symfony 2.0.12 lên 2.1. Tôi cũng được cài đặt FosUserBundle, nhưng khi tôi chạy lệnhRegistrationFormType :: buildForm() không tương thích

php composer.phar update 

sau đó sản lượng nhà soạn nhạc lỗi:

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 

Đó là cái gì mà RegistrationFormType trước đây của tôi là không tương thích với giao diện mới hình thức Symfony 2.1 nói.

composer.json My

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

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

Bất cứ ý tưởng gì là sai?

Trả lời

17

Phương pháp buildFOrm của bạn sử dụng giản đồ cũ .. này đã thay đổi:

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

cũng đảm bảo bạn bao gồm cái mới ..

use Symfony\Component\Form\FormBuilderInterface; 
+0

Cảm ơn. Nó hoạt động. – repincln