2017-04-21 15 views
0

これはarticleです。私はRegisterFormType.phpを無効にしようとしていますが、結果は表示されません。Symfony FOSUserBundleはフォームを無効にすることはできません。効果はありません

まず、私はAppKernel.phpを持っている:

new FOS\UserBundle\FOSUserBundle(), 
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'), 
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(), 

services.yml

app.form.registration: 
    class: Application\Sonata\UserBundle\Form\RegistrationFormType 
    tags: 
     - { name: form.type, alias: app_user_registration } 

config.yml:

fos_user: 
    db_driver:  orm # can be orm or odm 
    firewall_name: main 
    user_class:  Application\Sonata\UserBundle\Entity\User 
    use_listener: true 
    group: 
     group_class: Application\Sonata\UserBundle\Entity\Group 
     group_manager: sonata.user.orm.group_manager     # If you're using doctrine orm (use sonata.user.mongodb.group_manager for mongodb) 

    service: 
     user_manager: sonata.user.orm.user_manager      # If you're using doctrine orm (use sonata.user.mongodb.user_manager for mongodb) 
    registration: 
     form: 
      type: app_user_registration 
      #validation_groups: [AppRegistration] 
    profile: 
     form: 
      name: app_user_profile 

のsrc /アプリケーション/ソナタ/ UserBundle /フォーム/登録フォーム.php:

namespace Application\Sonata\UserBundle\Form; 

use ... 

class RegistrationFormType extends AbstractType { 
    public function buildForm(FormBuilderInterface $builder, array $options) { 
     $builder 
      ->add('fullName') 
     ; 
    } 

    public function getParent() { 
     return "fos_user_registration"; 
    } 


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

のsrc /アプリケーション/ソナタ/ UserBundle /エンティティ/ User.php:

namespace Application\Sonata\UserBundle\Entity; 

use Sonata\UserBundle\Entity\BaseUser as BaseUser; 

class User extends BaseUser 
{ 
    /** 
    * @var int $id 
    */ 
    protected $id; 

    /** 
    * @var string 
    */ 
    protected $fullName; 

    /** 
    * @return string 
    */ 
    public function getFullName() { 
     return $this->fullName; 
    } 

    /** 
    * @param string $fullName 
    */ 
    public function setFullName($fullName) { 
     $this->fullName = $fullName; 
    } 

    /** 
    * Get id 
    * 
    * @return int $id 
    */ 
    public function getId() { return $this->id;} 
} 

他の方法としては、(私は正しくないと思います)私のカスタムディレクトリにRegistrationController.phpを上書きしようとした、$form = $this->container->get('app.form.registration')(別名が変更私のフォームの場合)、エラーAttempted to call an undefined method named "createView" of class "Application\Sonata\UserBundle\Form\RegistrationFormTypeが表示されます。この後、私はこのクラスの親拡張クラスをContentAwareからControllerに変更し、フォームと新しいフィールドを見ることができますが、未知のエラーを送信した後、プロファイラでも名前について書かれていません。

symfony 2.8.18、FOSUserBundle 1.3.7。あなたの時間をありがとう。

+0

config.ymlフォーム名に変更し、解決へ**タイプ**(そのマニュアルに書かれている名前にもかかわらず、それにより、デバッグが分かった:コンテナ –

答えて

0

config.ymlのFOSUserBundleの設定を更新しましたか?

fos_user: 
    # ... 
    registration: 
     form: 
      name: app_user_registration 
+0

ははい、今、このファイルの断片でどのように見えるか、上記のポストに追加申し訳ありませんが、このファイルを一度に忘れました。 –

関連する問題