如果您使用MySQL和php作为实体定义,那么您必须创建您的实体,如下所示:
// src/Acme/UserBundle/Entity/UserProfile.php
namespace Acme\UserBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="user_profile")
*/
class UserProfile extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
*/
private $phone;
/**
* @var string
*/
private $language;
//....................
//Add all your properties here
public function __construct()
{
parent::__construct();
// your own logic
}
}
第二步是创建表单类型,询问您想要的字段:
// src/Acme/UserBundle/Form/Type/RegistrationFormType.php
namespace Acme\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('phone');
$builder->add('language');
//...............
//Add all your properties here with $builder->add('property name')
}
public function getName()
{
return 'acme_user_registration';
}
}
现在您需要让捆绑包知道您要使用自定义表单:
# src/Acme/UserBundle/Resources/config/services.yml
services:
acme_user.registration.form.type:
class: Acme\UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: acme_user_registration }
最后一步是告诉FOSUserBundle它将使用您的表单类型而不是默认表单类型:
# app/config/config.yml
fos_user:
# ...
registration:
form:
type: acme_user_registration
资源: