Bonjour,
j'ai codé un formulaire qui permet de remplir les détails d'une annonce, en plus les champs nom, prénom, ....
mais s'il s'agit d'un client déja connecté les champs nom, prénom, ... ne seront pas affichés.
l'enregitrement d'annonce se fait correctement pour les client inconnu. mais ça pose problème pour ceux connus, car id_customer prend null.
entité advert
<?php
namespace x\xxBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Symfony\Component\HttpFoundation\File\UploadedFile;
/**
* Advert
*
* @ORM\Table(name="Advert")
* @ORM\Entity(repositoryClass="x\xxBundle\Repository\AdvertRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Advert
{
/**
* @ORM\ManyToOne(targetEntity="x\xxBundle\Entity\Customer",cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $customer;
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
{...}
/**
* Set advert
*
* @param \x\xxBundle\Entity\Advert $advert
*
* @return Advert
*/
public function setAdvert(\x\xxBundle\Entity\Advert $advert)
{
$this->advert = $advert;
return $this;
}
/**
* Get advert
*
* @return \x\xxBundle\Entity\Advert
*/
public function getAdvert()
{
return $this->advert;
}
/**
* Set customer
*
* @param \x\xxBundle\Entity\Customer $customer
*
* @return Advert
*/
public function setCustomer(\x\xxBundle\Entity\Customer $customer)
{
$this->customer = $customer;
return $this;
}
/**
* Get customer
*
* @return \x\xxBundle\Entity\Customer
*/
public function getCustomer()
{
return $this->customer;
}
}
advertType
<?php
namespace xx\XXBundle\Form;
{...}
class AdvertType extends AbstractType
{
// ****pour controler la ajout customer****
private $isGranted;
public function __construct($isGranted)
{
$this->isGranted = $isGranted;
}
//****************************************
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('title', TextType::class
, array(
'label'=>'Titre',
'required'=> false,
'attr' => array(
'placeholder' => 'Titre',
)))
{...}
;
// anonyme => ajout customer
if(!($this->isGranted))
{
$builder->add('customer', CustomerType::class);
}
}
{...}
}
addAction
public function addAction(Request $request)
{
$advert = new Advert;
$form = $this->createForm(new AdvertType($this->get('security.context')->isGranted('IS_AUTHENTICATED_REMEMBERED')), $advert);
if($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
/*##############################################*/
$file = $advert->getAdvertimage();
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move(
$this->getParameter('images_directory'),
$fileName
);
$advert->setAdvertimage($fileName);
/*###############################################*/
$em = $this->getDoctrine()->getManager();
$request->getSession()->getFlashBag()->add('notice', 'Annonce bien enregistrée.');
return $this->redirectToRoute('x_xx_show', array('id' => $advert->getId()));
}
return $this->render('XXXBundle:Advert:add.html.twig', array('form' => $form->createView(),
));
}
Merci d'avance.
Avez vous essayer de faire
if(isset($this->getUser())){ // verifier si l'utilisateur est connecté
$advert->setCustomer($this->getUser()); //affecter l'utilisateur connecté à l'annonce
}