У меня есть объект 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'
]);
}
Может кто-нибудь помочь мне, пожалуйста?