如何在FOSUserBundle中添加另一个字段Symfony 2.7的注册表 [英] How to add a registration form another field Symfony 2.7 in FOSUserBundle

查看:119
本文介绍了如何在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来玩耍,所以请拿一粒盐。




  1. 删除您写的服务

  2. 替换为:


    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 :

  1. delete the service you wrote and
  2. 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆