Symfony 4 - Сохранять дочернюю сущность на основе родительской сущности? - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть объект User, который имеет это свойство:

Пользователь. php

class User implements UserInterface, Serializable
{
    //...

    /**
     * Feuille de congés de l'utilisateur
     * @ORM\OneToOne(targetEntity="App\Entity\FeuilleConge", inversedBy="user", cascade={"persist", "remove"})
     */
    private $feuilleConge;

FeuilleConge. php

**
 * @ORM\Entity(repositoryClass="App\Repository\FeuilleCongeRepository")
 * @Vich\Uploadable
 */
class FeuilleConge implements Serializable
{
    /**
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     */
    private $id;

    /**
     * Nom de la feuille de congés
     * @var string
     *
     * @ORM\Column(name="feuilleCongeName", type="string", length=255, nullable=true)
     */
    private $feuilleCongeName;

    /**
     * Fichier de la feuille de congés
     * @Vich\UploadableField(mapping="feuillesConge", fileNameProperty="feuilleCongeName")
     * @var File
     */
    private $feuilleCongeFile;

    /**
     * Dernière modification
     * @ORM\Column(type="datetime", nullable=true)
     * @var \DateTime
     */
    private $updatedAt;

    /**
     * Utilisateur ayant la feuille de congés
     * @ORM\OneToOne(targetEntity="App\Entity\User", mappedBy="feuilleConge", cascade={"persist", "remove"})
     */
    private $user;

    public function getPropertyName()
    {

        $slugify = new Slugify();
        $name = 'feuille-conges-' . $this->user->getNom() . '-' . $this->user->getPrenom() . mt_rand(0,500);
        return $slugify->slugify($name);

    }

        /**
 * Insérer l'utilisateur associé à la feuille de congés
 *
 * @param User|null $user
 * @return self
 */
public function setUser(?User $user): self
{
    $this->user = $user;

    // set (or unset) the owning side of the relation if necessary
    $newFeuilleConge = $user === null ? null : $this;
    if ($newFeuilleConge !== $user->getFeuilleConge()) {
        $user->setFeuilleConge($newFeuilleConge);
    }

    return $this;
}

Поэтому мой "feuilleConge" обозначает файл, загруженный с помощью VichUploader. В моей форме, когда я выбираю файл и отправляю его, пользователь остается пустым для файла, и я использую это исключение при попытке присвоить файлу имя:

Вызов функции-члена getNom () on null

(в функции getPropertyName () )

Это мои формы:

ProfileType. php:

//...
->add('feuilleConge', FeuilleCongeType::class, [
                'label' => false,
                'required' => false,
            ])

FeuilleCongeType. php:

public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('feuilleCongeFile', VichFileType::class, [
                'label' => "Feuille de congés",
                'allow_delete' => false,
                'attr' => [
                    'placeholder' => 'Choisir un fichier',
                ],
                'constraints' => [
                    new File([
                        'maxSize' => '2M',
                        'mimeTypes' => [
                            'application/pdf',
                        ],
                        'mimeTypesMessage' => "Veuillez choisir un fichier .pdf",
                        'maxSizeMessage' => "Votre fichier est trop volumineux {{ size }} {{ suffix }}. La taille maximale autorisée est {{ limit }} {{ suffix }}"
                    ])
                ],
                'help' => 'Format valide : pdf'
            ]);
    }

Может кто-нибудь помочь мне, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...