Bonjour,
Alors voilà je me tire les cheveux : je comprend pas ce que ce passe.
Mon bundle me sert à ajouter des article à un blog. Jusque la tout marchait bien et depuis peu impossible : J'ai un setter qui part en vrille ... Il ne me reconnait plus la variable $Author des que je clique sur enregistrer !
Voici mon controller :
(Dans le premier vardump il m'affiche bien ma variable, dans le second, il m'affiche null !)
public function addAction(Request $request)
{
$listImages = $this->getDoctrine()
->getManager()
->getRepository('AMImageManagerBundle:Image')
->getImagesActivites();
$article = new Article();
var_dump($article);
$form = $this->get('form.factory')->create(ArticleType::class, $article);
if ($request->isMethod('POST') && $form->handleRequest($request)->isValid()) {
var_dump($article);
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
$request->getSession()->getFlashBag()->add('notice', 'Article bien enregistré.');
return $this->redirectToRoute('AM_Blog_view', array('id' => $article->getId()));
}
return $this->render('AMBlogBundle:Article:add.html.twig', array(
'form' => $form->createView(),
'listImages' => $listImages,
));
}
Mon entité ou je persist par default ma variable :
namespace AM\BlogBundle\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* Article
*
* @ORM\Table(name="article")
* @ORM\Entity(repositoryClass="AM\BlogBundle\Repository\ArticleRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Article
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="title", type="string", length=255)
* @Assert\Length(min=10, minMessage="Le titre doit comporter 10 caractères minimum")
*/
private $title;
/**
* @var string
*
* @ORM\Column(name="author", type="string", length=255)
* @Assert\NotBlank()
*/
private $author;
/**
* @var string
*
* @ORM\Column(name="content", type="text")
* @Assert\NotBlank()
*/
private $content;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
* @Assert\DateTime()
*/
private $date;
public function __construct()
{
$this->date = new \Datetime();
$this->author = 'MOI';
}
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set title
*
* @param string $title
*
* @return Article
*/
public function setTitle($title)
{
$this->title = $title;
return $this;
}
/**
* Get title
*
* @return string
*/
public function getTitle()
{
return $this->title;
}
/**
* Set author
*
* @param string $author
*
* @return Article
*/
public function setAuthor($author)
{
$this->author = $author;
return $this;
}
/**
* Get author
*
* @return string
*/
public function getAuthor()
{
return $this->author;
}
// ...
}
J'ai même essayé dans mon form :
->add('author', TextType::class,
array('label' => 'Auteur',
'data' => 'Re Moi'))
Dans ma vue je vois bien "Re Moi" mais des que je clique sur Enregistrer, l'input se vide et me dit de le remplir ...
Quelqu'un peut m'aider ? Merci d'avance.