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
First your user class is missing its constructor. Since you inherit BaseUser you have to call the parent constructor too. So…
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
-> 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.
And in an comment Patt pointed our overriding registration FOSUserBundle Symfony2