如何在FOSUserBundle中添加另一个字段Symfony 2.7的注册表 [英] How to add a registration form another field Symfony 2.7 in FOSUserBundle
本文介绍了如何在FOSUserBundle中添加另一个字段Symfony 2.7的注册表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何在注册表单上添加一个字段?我这样做:
\\src\UserBundle\Form\Type\RegistrationFormType.php
<?php
命名空间UserBundle\Form\Type;
//使用Symfony\Component\Form\AbstractType;
使用Symfony\Component\Form\FormBuilderInterface;
使用FOS\UserBundle\Form\Type\RegistrationFormType作为BaseType;
class RegistrationFormType extends BaseType
{
public function buildForm(FormBuilderInterface $ builder,array $ options)
{
parent :: buildForm($ builder, $选项);
$ builder-> add('realname');
}
public function getParent()
{
return'fos_user_registration';
}
public function getName()
{
return'app_user_registration';
}
}
\\src\UserBundle\Resources\config
services:
app_user.registration.form.type:
类:UserBundle\Form\Type\RegistrationFormType
参数:[%fos_user.model.user.class%]
标签:
- {name:form.type ,别名:app_user_registration}
\\src\UserBundle\Entity\User.php
命名空间UserBundle\Entity;
使用FOS\UserBundle\Model\User作为BaseUser;
使用Doctrine\ORM\Mapping作为ORM;
使用Symfony\Component\Validator\Constraints作为Assert;
/ **
* @ ORM\Entity
* @ ORM\Table(name =web_user)
* /
类用户扩展BaseUser
{
/ **
* @ ORM\Id
* @ ORM\Column(type =integer)
* @ ORM\ GeneratedValue(strategy =AUTO)
* /
protected $ id;
/ **
* @ ORM\Column(type =string,length = 255)
*
* @ Assert\NotBlank(message = 请输入你的姓名,groups = {注册,个人资料})
* @ Assert\Length(
* min = 3,
* max = 255,
* minMessage =名称太短,
* maxMessage =名称太长,
* groups = {注册,个人资料}
*)
* /
protected $ realname;
/ **
*获取ID
*
* @return integer
* /
public function getId()
{
return $ this-> id;
}
/ **
*设置实名
*
* @param string $ realname
* @return用户
* /
public function setRealname($ realname)
{
$ this-> realname = $ realname;
return $ this;
}
/ **
*获取真实姓名
*
* @return string
* /
public function getRealname )
{
return $ this-> realname;
}
}
\\src\UserBundle\Resources\config\services.yml
services:
app_user.registration .form.type:
class:UserBundle\Form\Type\RegistrationFormType
arguments:[%fos_user.model.user.class%]
标签:
- {名称:form.type,别名:app_user_registration}
我不明白什么是
结果是一个错误:
无法加载类型app_user_registration
帮助我!!!
我认为服务没有找到
解决方案
我也有同样的问题。 (我实际上通过谷歌搜索我们两次的错误发现你的帖子)
我刚刚开始学习和使用symfony来玩耍,所以请拿一粒盐。
- 删除您写的服务
- 替换为:
fos_user:
db_driver:orm
firewall_name:main
user_class:UserBundle\Entity\用户
注册:
表单:
类型:app_user_registration
How to add a field on the registration form ? I do so:
\\src\UserBundle\Form\Type\RegistrationFormType.php
<?php
namespace UserBundle\Form\Type;
//use Symfony\Component\Form\AbstractType;
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);
$builder->add('realname');
}
public function getParent()
{
return 'fos_user_registration';
}
public function getName()
{
return 'app_user_registration';
}
}
\\src\UserBundle\Resources\config
services:
app_user.registration.form.type:
class: UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: app_user_registration }
\\src\UserBundle\Entity\User.php
namespace UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="web_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 $realname;
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
/**
* Set realname
*
* @param string $realname
* @return User
*/
public function setRealname($realname)
{
$this->realname = $realname;
return $this;
}
/**
* Get realname
*
* @return string
*/
public function getRealname()
{
return $this->realname;
}
}
\\src\UserBundle\Resources\config\services.yml
services:
app_user.registration.form.type:
class: UserBundle\Form\Type\RegistrationFormType
arguments: [%fos_user.model.user.class%]
tags:
- { name: form.type, alias: app_user_registration }
I can not understand what is missing The result is a mistake: Could not load type "app_user_registration" Help me please!!! I think that the service does not find
解决方案
I had the same problem. (I actually found your post by googling the error we both had) I have just started learning and toying with symfony, so please take this with a grain of salt.
Try this in your config.yml :
- delete the service you wrote and
- replace it with:
fos_user: db_driver: orm firewall_name: main user_class: UserBundle\Entity\User registration: form: type: app_user_registration
这篇关于如何在FOSUserBundle中添加另一个字段Symfony 2.7的注册表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文