无法覆盖FOSUserBundle默认寄存器表单

时间:2017-08-02 15:17:32

标签: php symfony doctrine-orm fosuserbundle symfony-forms

我是symfony的新手,我正在使用symfony 2.8。 我安装了FOSUserBundle,它运行得很好,问题是我想在注册表单中添加一个字段,我按照FOSUserBundle documentation中的步骤进行操作但是没有任何改变,我也没有收到错误。 我不知道我到底错过了什么。 这是我的用户实体:

private void setButtonAction(){
    reverseButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            String txt = new StringBuilder(input.getText()).reverse().toString();
            output.append(txt);
        }
    });
}

这是RegistrationType.php:

<?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
    }
}

app / config / services.yml文件:

<?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 / config.yml中的FOSUserBundle相关的部分:

parameters:
    #parameter_name: value

services:
    app.form.registration:
        class: AppBundle\Form\RegistrationType
        tags:
            - { name: form.type, alias: app_user_registration }

我找不到我所缺少的东西。 谢谢。

1 个答案:

答案 0 :(得分:2)

添加到您form

/**
 * @param OptionsResolverInterface $resolver
 */
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\User'
    ));
}

如果您正在使用Symfony&lt; 2.8

# app/config/config.yml
fos_user:
    # ...
    registration:
        form:
            type: AppBundle\Form\RegistrationType

如果您使用的是Symfony&gt; 2.8

# app/config/config.yml
fos_user:
    # ...
    registration:
        form:
            name: AppBundle\Form\RegistrationType