FOSUser Bundle.. Could not load type “X” error when overriding form type

fosuserbundle, symfony

Solution

First your user class is missing its constructor. Since you inherit BaseUser you have to call the parent constructor too. So...

public function __construct()
{
    parent::__construct();

    //your code

}

Second you do not need to override the form type. Since you have added the name field to your entity it will be available in your form automatically via

{{ form_widget(myForm.name)} }

-> FosUserBundle Doc

However, are your sure you imported your services.xml in your config.yml AND why are you mixing xml and yml? Just stick to one.

imports:
    - { resource: @SamBundleUserBundle/Resources/config/services.yml }

And in an comment Patt pointed our overriding registration FOSUserBundle Symfony2

Problem

I thought I followed the documentation very closely, but for some reason, I am receiving this error message.. Could not load type "sam_user_registration" // src/Sam/Bundle/UserBundle/Entity/User.php ``` namespace Sam\Bundle\UserBundle\Entity; use Doctrine\ORM\Mapping as ORM; use FOS\UserBundle\Entity\User as BaseUser; use Symfony\Component\Validator\Constraints as Assert; /** * @ORM\Entity * @ORM\Table(name="sam_user") */ class User extends BaseUser { /** * @var string $id * * @ORM\Id * @ORM\Column(name="id", type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; /** * Get id * * @return string $id */ public function getId() { return $this->id; } /** * @ORM\Column(type="string", length=255) * * @Assert\NotBlank(message="Please enter your name.", groups={"Registration", "Profile"}) * @Assert\MinLength(limit="3", message="The name is too short.", groups={"Registration", "Profile"}) * @Assert\MaxLength(limit="255", message="The name is too long.", groups={"Registration", "Profile"}) */ protected $name; ``` // src/Sam/Bundle/UserBundle/Form/Type/RegistrationFormType.php ``` <?php namespace Sam\Bundle\UserBundle\Form\Type; use Symfony\Component\Form\FormBuilderInterface; use FOS\UserBundle\Form\Type\RegistrationFormType as BaseType; class RegistrationFormType extends BaseType { public function buildForm(FormBuilderInterface $builder, array $options) { parent::buildForm($builder, $options); // add your custom field $builder->add('name'); } public function getName() { return 'sam_user_registration'; } } ``` ** src/Sam/Bundle/UserBundle/Resources/config/services.xml ** ``` <container xmlns="http://symfony.com/schema/dic/services" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd"> <service id="sam_user.registration.form.type" class="Sam\Bundle\UserBundle\Form\Type\RegistrationFormType"> <tag name="form.type" alias="sam_user_registration" /> <argument>%fos_user.model.user.class%</argument> </service> </container> ``` # app/config/config.yml ``` fos_user: db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel' firewall_name: main #user_class: Sam\Bundle\UserBundle\Document\User user_class: Sam\Bundle\UserBundle\Entity\User group: group_class: Sam\Bundle\UserBundle\Entity\Group profile: # Authentication Form form: type: fos_user_profile name: fos_user_profile_form validation_groups: [Authentication] registration: form: type: sam_user_registration ```

Original source

Related problems