我有一个带有额外字段的注册表单。下面是我的代码:
服务.yml
services:
app.form.registration:
class: AppBundle\Form\FOSUserBundle\Registration\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
我的扩展注册表:
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('company', new CompanyForm(), [
'label' => 'form.company.header', 'translation_domain' => 'FOSUserBundle'
]);
}
public function getParent()
{
return 'fos_user_registration';
}
public function getName()
{
return 'app_user_registration';
}
}
公司形式:
class CompanyForm extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name', 'text', [
'label' => 'form.company', 'translation_domain' => 'FOSUserBundle'
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Company',
));
}
public function getName()
{
return 'app_form_company';
}
}
用户实体:
class User extends BaseUser
{
public function __construct()
{
parent::__construct();
// your own logic
}
use Bleamable;
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\ManyToOne(targetEntity="Company",cascade={"persist"})
* @ORM\JoinColumn(name="company", referencedColumnName="id")
*/
protected $company;
公司实体
/**
* @ORM\Entity
* @ORM\Table(name="company")
* @UniqueEntity(fields={"identifier"})
*
* @ORM\HasLifecycleCallbacks
*/
class Company
{
use Timestampable;
// use Bleamable;
/**
* @var int
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @var string
* @ORM\Column(type="string", nullable=false)
* @Assert\NotBlank()
* @Assert\NotNull()
*/
private $name;
/**
* @var string
* @ORM\Column(type="string", nullable=true)
*/
private $identifier;
我想将该公司名称添加到登录表单并检查它是否有效。如果username
,password
并且company name
是 OK 用户应该登录。我知道如何覆盖fos_user_registration
但我找不到有关登录表单的信息...你能帮我吗?