2017-11-03 13 views
0

formType fosuserBundleをオーバーライドするとエラーが発生します。エンティティを作成してからフォームを生成しますが、今度はconfig.ymlのフォームfos_userの名前を変更するとこのエラーが発生します。名前「CondidatType」に不正な文字が含まれています

enter image description here

コードにformType:

<?php 

    namespace AppBundle\Form; 

    use Symfony\Component\Form\AbstractType; 

    /** 
    *Class DefaultController. 
    */ 
    class CondidatType extends AbstractType 
    { 
     /** 
     * function buildForm when I add many attributs added by entity User. 
     * 
     * @param \Symfony\Component\Form\FormBuilderInterface $builder 
     * @param array          $options 
     */ 
     public function buildForm(\Symfony\Component\Form\FormBuilderInterface $builder, array $options) 
     { 
      $builder 
        ->add('civilite', null, array('label' => 'Civilité')) 
        ->add('nom', null, array('label' => 'Nom')) 
        ->add('prenom', null, array('label' => 'Prénom')) 
        ->add('pays', null, array('label' => 'Pays')) 
        ->add('telephone', null, array('label' => 'Téléphone')) 
        ; 
     } 

     /** 
     * function get Parent Form. 
     * 
     * @return string 
     */ 
     public function getParent() 
     { 
      return 'FOS\UserBundle\Form\Type\RegistrationFormType'; 
     } 

     /** 
     * name for this form. 
     * 
     * @return string 
     */ 
     public function getBlockPrefix() 
     { 
      return 'condidat_user_registration'; 
     } 

     /** 
     * name for this form. 
     * 
     * @return string 
     */ 
     public function getName() 
     { 
      return $this->getBlockPrefix(); 
     } 

     /** 
     * function setDefaultOptions. 
     * 
     *@param OptionsResolverInterface $resolver 
     */ 
     public function setDefaultOptions(OptionsResolverInterface $resolver) 
     { 
      $resolver->setDefaults(array(
       'data_class' => 'AppBundle/Entity/User', 
      )); 
     } 
    } 

コードservice.yml:不正な文字コンテンツはありません

services: 
    condidat_user_registration: 
     class: AppBundle\Form\CondidatType 
     public: true 
     tags: 
      - { name: form.type, alias: condidat_user_registration } 

config.yml:

fos_user: 
    db_driver: orm # other valid values are 'mongodb' and 'couchdb' 
    firewall_name: main 
    user_class: AppBundle\Entity\User 
    from_email: 
     address: "[email protected]" 
     sender_name: "Test App" 
    registration: 
     form: 
      name: AppBundle\Form\CondidatType 
     confirmation: 
      enabled: true  

は、今あなたが setDefaultOptions()方法にタイプミスがあり、このエラー

+0

'' DataBase '=>' AppBundle/Entity/User'' => ''data_clas s '=>' AppBundle \ Entity \ User'' – ccKep

答えて

0

を解決する方法について説明します。

AppBundle/Entity/User - これはファイルへのパスです。

AppBundle\Entity\User - これですFQCN(完全修飾クラス名、名前空間で

は、我々がFQCNを使用するので、

/** 
    * function setDefaultOptions. 
    * 
    * @param OptionsResolverInterface $resolver 
    */ 
    public function setDefaultOptions(OptionsResolverInterface $resolver) 
    { 
     $resolver->setDefaults(array(
      'data_class' => 'AppBundle\Entity\User', 
     )); 
    } 

そして、あなたのフォームの宣言で型の代替名。 in config.yml

registration: 
     form: 
      type: AppBundle\Form\CondidatType 
+1

また、FQCNへのパスを変更するとエラーが発生する – devit2017

+0

@ devit2017。私は私の答えを編集しました。また、質問のヘッダーを変更してください。それは非常に具体的です。たぶんこれを試してみてください: "エラーが発生しました:FOSUser登録フォームを上書きするときにエラーが発生しました" – staskrak

+0

私はこのエラーがあります:プロパティ "civilite"も "getCivilite()"、 "civilite()" 、 "isCivilite()"、 "hasCivilite()"、 "__get()"が存在し、 "AppBundle \ Entity \ User"クラスのパブリックアクセスを持っています。 – devit2017

関連する問題