0
votes

Im using Symfony 2.8.x and FOSUserBundle.

I try to expand my User with a few fields like last name and first name... I do it like the document says https://symfony.com/doc/master/bundles/FOSUserBundle/overriding_forms.html

When i try to register following Message comes

Neither the property "name" nor one of the methods "getName()", "name()", "isName()", "hasName()", "__get()" exist and have public access in class "AppBundle\Entity\User"

This is my Registration Class

    <?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\UserBundle\Form\Type\RegistrationFormType';

        // Or for Symfony < 2.8
        // return 'fos_user_registration';
    }

    public function getBlockPrefix()
    {
        return 'app_user_registration';
    }

    // For Symfony 2.x
    public function getName()
    {
        return $this->getBlockPrefix();
    }
}

and this is my User Class

<?php
// src/AppBundle/Entity/User.php

namespace AppBundle\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="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;
    /**
     * @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 $firstname;
    /**
     * @ORM\Column(type="integer")
     */
    protected $mentorid;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

Can someone help me with that Problem?

Best regards

2

2 Answers

0
votes

Did you try to add setter and getter for field 'name'? Using for example doctrine:generate:entities YourBundleName

0
votes

You really need to do what Andrey suggests. You need to generate the setters and getters for your fields. You can do it manually, but I would say it's safer to start with automatically generate methods which afterwards you can customise as needed. You need to run

php app/console doctrine:generate:entities AppBundle/Entity/User

See http://symfony.com/doc/current/doctrine.html#generating-getters-and-setters for more details