Symfony 2.8 FOSUserBundle + тип для встраивания

В настоящее время я работаю над Symfony 2.8 с FOSUserBundle и PUGXmultiUserBundle.

Я пытаюсь объединить регистрационную форму с другой формой, имеющей двусторонние отношения.

При создании учетная запись пользователя должна быть создана вдоль линии отношения сущности.

Ошибка:

Возникла исключительная ситуация во время выполнения салона INSERT INTO (имя, описание, телефон, электронная почта, адрес, ville, CP, siret, date, user_id) VALUES (?,?,?,?,?,?,?,?,?,?)'с параметрами ["Le salon de la rue", "desc", "0223254578", "salon2larue@gmail.com", "2 rue de la motte", "Saint-Grüggoire", "35000", "456987887456", "2016-02-17 17:55:52", null]:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец user_id не может быть пустым

PUGXMultiUserBundle => Объект UserOne:

    <?php

namespace UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use PUGX\MultiUserBundle\Validator\Constraints\UniqueEntity;


/**
 * @ORM\Entity
 * @ORM\Table(name="user_one")
 * @UniqueEntity(fields = "username", targetClass = "UserBundle\Entity\User", message="fos_user.username.already_used")
 * @UniqueEntity(fields = "email", targetClass = "UserBundle\Entity\User", message="fos_user.email.already_used")
 */
class UserOne extends User
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
    * @ORM\OneToMany(targetEntity="CoreBundle\Entity\Salon", mappedBy="user", cascade={"persist","remove"})
    */
    private $salons;


    public function __construct()
    {
        parent::__construct();
        // your own logic
        $this->roles = array('ROLE_SALON');
        $this->salons = new ArrayCollection();
    }

    /**
     * Add salons
     *
     * @param \CoreBundle\Entity\Salon $salons
     * @return UserOne
     */
    public function addSalon(\CoreBundle\Entity\Salon $salons)
    {
        $this->salons[] = $salons;
        $salons->setUser($this);
        return $this;
    }

    /**
     * Remove salons
     *
     * @param \CoreBundle\Entity\Salon $salons
     */
    public function removeSalon(\CoreBundle\Entity\Salon $salons)
    {
        $this->salons->removeElement($salons);
    }

    /**
     * Get salons
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getSalons()
    {
        return $this->salons;
    }
}

CoreBundle Салон лица:

<?php

namespace CoreBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use UserBundle\Entity\UserOne;

/**
 * Salon
 *
 * @ORM\Table(name="salon")
 * @ORM\Entity(repositoryClass="CoreBundle\Repository\SalonRepository")
 */
class Salon
{

    /**
   * @ORM\ManyToOne(targetEntity="UserBundle\Entity\UserOne", inversedBy="salons", cascade={"persist"})
   * @ORM\JoinColumn(nullable=false)
   */
    private $user;

    /**
     * @var int
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="nom", type="string", length=255)
     */
    private $nom;

    /**
     * @var string
     *
     * @ORM\Column(name="description", type="text")
     */
    private $description;

    /**
     * @var integer
     *
     * @ORM\Column(name="phone", type="string", length=20)
     */
    private $phone;

    /**
     * @var string
     *
     * @ORM\Column(name="email", type="string", length=255)
     */
    private $email;

    /**
     * @var string
     *
     * @ORM\Column(name="adresse", type="string", length=255)
     */
    private $adresse;

    /**
     * @var string
     *
     * @ORM\Column(name="ville", type="string", length=255)
     */
    private $ville;

    /**
     * @var string
     *
     * @ORM\Column(name="CP", type="string", length=10)
     */
    private $CP;

    /**
     * @var string
     *
     * @ORM\Column(name="siret", type="string", length=20)
     */
    private $siret;

    /**
     * @var \DateTime
     *
     * @ORM\Column(name="date", type="datetime")
     */
    private $date;

    public function __construct()
    {
        $this->date = new \Datetime();
    }


    /**
     * Set user
     *
     * @param \UserBundle\Entity\UserOne $user
     * @return Salon
     */
    public function setUser(\UserBundle\Entity\UserOne $user)
    {
        $this->user = $user;

        return $this;
    }

      //Others Getters/Setters

    /**
     * Get user
     *
     * @return \UserBundle\Entity\UserOne 
     */
    public function getUser()
    {
        return $this->user;
    }
}

И регистрация UserOneFormType:

<?php
namespace UserBundle\Form\Type;

use CoreBundle\Form\SalonType;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\Form\Extension\Core\Type\CollectionType;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Component\Form\FormEvents;
use Symfony\Component\Form\FormEvent;
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
use Symfony\Component\Form\Extension\Core\Type\TextType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;

class RegistrationUserOneFormType  extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        parent::buildForm($builder, $options);
        $builder
        //->add('salons', new SalonType(), array('mapped' => false));
        /*->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $event) {
            $user = $event->getData();
        })*/
        ->add('salons', 'collection', [
                        'type' => new SalonType,
                        'allow_add' => true,
                        'allow_delete' => false
                ])
        ;
    }

    public function getParent()
    {
        return 'fos_user_registration';
    }

    public function getName()
    {
        return 'user_one_registration_form';
    }

}

Может быть, кто-то здесь уже столкнулся с проблемой, небольшая помощь будет приветствоваться.

0 ответов

Другие вопросы по тегам