无法覆盖 FOSUserBundle 默认注册表单
Could not override FOSUserBundle default register form
我是 symfony 的新手,我使用的是 symfony 2.8。
我安装了 FOSUserBundle,它工作得很好,问题是我想在注册表中添加一个字段,我按照 FOSUserBundle documentation 中的步骤操作,但没有任何改变,我没有收到错误。
我不知道我到底错过了什么。
这是我的用户实体:
<?php
// src/AppBundle/Entity/User.php
namespace AppBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\NotBlank(message="Please enter your name.", groups={"Registration", "Profile"})
* @Assert\Length(
* min=3,
* max=255,
* minMessage="The name is too short.",
* maxMessage="The name is too long.",
* groups={"Registration", "Profile"}
* )
*/
protected $name;
public function __construct()
{
parent::__construct();
// your own logic
}
}
这是 RegistrationType.php :
<?php
// src/AppBundle/Form/RegistrationType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name');
}
public function getParent()
{
return 'fos_user_registration';
}
public function getName()
{
return 'app_user_registration';
}
}
app/config/services.yml 文件:
parameters:
#parameter_name: value
services:
app.form.registration:
class: AppBundle\Form\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
这是 app/config/config.yml:
中与 FOSUserBundle 相关的部分
fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: AppBundle\Entity\User
registration:
form:
name: app_user_registration
我找不到我丢失的东西。
谢谢。
加你form
:
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User'
));
}
如果您使用的是 Symfony < 2.8
# app/config/config.yml
fos_user:
# ...
registration:
form:
type: AppBundle\Form\RegistrationType
如果您使用的是 Symfony > 2.8
# app/config/config.yml
fos_user:
# ...
registration:
form:
name: AppBundle\Form\RegistrationType
我是 symfony 的新手,我使用的是 symfony 2.8。 我安装了 FOSUserBundle,它工作得很好,问题是我想在注册表中添加一个字段,我按照 FOSUserBundle documentation 中的步骤操作,但没有任何改变,我没有收到错误。 我不知道我到底错过了什么。 这是我的用户实体:
<?php
// src/AppBundle/Entity/User.php
namespace AppBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=255)
*
* @Assert\NotBlank(message="Please enter your name.", groups={"Registration", "Profile"})
* @Assert\Length(
* min=3,
* max=255,
* minMessage="The name is too short.",
* maxMessage="The name is too long.",
* groups={"Registration", "Profile"}
* )
*/
protected $name;
public function __construct()
{
parent::__construct();
// your own logic
}
}
这是 RegistrationType.php :
<?php
// src/AppBundle/Form/RegistrationType.php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
class RegistrationType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('name');
}
public function getParent()
{
return 'fos_user_registration';
}
public function getName()
{
return 'app_user_registration';
}
}
app/config/services.yml 文件:
parameters:
#parameter_name: value
services:
app.form.registration:
class: AppBundle\Form\RegistrationType
tags:
- { name: form.type, alias: app_user_registration }
这是 app/config/config.yml:
中与 FOSUserBundle 相关的部分fos_user:
db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
firewall_name: main
user_class: AppBundle\Entity\User
registration:
form:
name: app_user_registration
我找不到我丢失的东西。 谢谢。
加你form
:
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User'
));
}
如果您使用的是 Symfony < 2.8
# app/config/config.yml
fos_user:
# ...
registration:
form:
type: AppBundle\Form\RegistrationType
如果您使用的是 Symfony > 2.8
# app/config/config.yml
fos_user:
# ...
registration:
form:
name: AppBundle\Form\RegistrationType