名称“CondidatType”包含非法字符

时间:2017-11-03 15:33:58

标签: php forms symfony

当我覆盖formType fosuserBundle时我有错误,我创建实体然后我生成表单但是当我在config.yml中更改表单fos_user的名称时我现在有这个错误。表格中的名称attributs不包含非法字符:< / p>

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',
            ));
        }
    }

code 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: "testapp@testapp.com"
      sender_name: "Test App"
  registration:
      form:
          name: AppBundle\Form\CondidatType
      confirmation:
          enabled: true    

现在如何解决此错误

1 个答案:

答案 0 :(得分:0)

setDefaultOptions()方法中有拼写错误。

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',
         ));
     }

在config.yml

的表单声明中用name替换name
registration:
      form:
          type: AppBundle\Form\CondidatType