I set up a response form to comments posted on my music and texts that I publish to know they are suitable. My comments are posted well and I manage to retrieve the id of the comment posted to which I want to respond (via js) but when I want to save my response in my table, I get this error:
The "App\Entity\Comment" entity has a repositoryClass set to "App\Entity\CommentRepository", but this is not a valid class. Check your class naming. If this is meant to be a service id, make sure this service exists and is tagged with "doctrine.repository_service".
My Home controller (here are the articles and comments):
// PARTIE COMMENTAIRES
// On crée le formulaire vierge (on instancie)
$comment = new Comment;
// On génère le formulaire
$commentForm = $this->createForm(CommentType::class, $comment);
$commentForm->handleRequest($request);
// Traitement du formulaire
if($commentForm->isSubmitted() && $commentForm->isValid()){
$comment->setCreatedAt(new \DateTimeImmutable());
$comment->setArticle($article);
$comment->setPublished(false);
// On récupère le contentu du champ caché parent
//parentid (champ caché) se trouve dans le CommentType
$parentid = $commentForm->get('parentid')->getData();
// On va chercher le commentaire correspondant
$manager = $this->doctrine->getManager();
$parent = $manager->getRepository(Comment::class)->find($parentid);
dd($parentid);
// On définit le parent
$comment->setParent($parent);
$manager->persist($comment);
$manager->flush();
$this->addFlash('comment_message', 'Votre commentaire est en attente de modération');
return $this->redirectToRoute('show_article', ['id' => $article->getId()])
My repository:
<?php
namespace App\Repository;
use App\Entity\Comment;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
/**
* @method Comment|null find($id, $lockMode = null, $lockVersion = null)
* @method Comment|null findOneBy(array $criteria, array $orderBy = null)
* @method Comment[] findAll()
* @method Comment[] findBy(array $criteria, array $orderBy = null, $limit = null, $offset = null)
*/
class CommentRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, Comment::class);
}
// /**
// * @return Comment[] Returns an array of Comment objects
// */
/*
public function findByExampleField($value)
{
return $this->createQueryBuilder('c')
->andWhere('c.exampleField = :val')
->setParameter('val', $value)
->orderBy('c.id', 'ASC')
->setMaxResults(10)
->getQuery()
->getResult()
;
}
*/
/*
public function findOneBySomeField($value): ?Comment
{
return $this->createQueryBuilder('c')
->andWhere('c.exampleField = :val')
->setParameter('val', $value)
->getQuery()
->getOneOrNullResult()
;
}
*/
}
My entity:
<?php
namespace App\Entity;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Collections\Collection;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity(repositoryClass=CommentRepository::class)
*/
class Comment
{
/**
* @ORM\Id
* @ORM\GeneratedValue
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255)
*/
private $email;
/**
* @ORM\Column(type="text")
*/
private $content;
/**
* @ORM\Column(type="datetime_immutable")
*/
private $createdAt;
/**
* @ORM\ManyToOne(targetEntity=Article::class, inversedBy="comments")
* @ORM\JoinColumn(nullable=false)
*/
private $article;
/**
* @ORM\Column(type="boolean")
*/
private $published;
/**
* @ORM\Column(type="string", length=255)
*/
private $pseudo;
/**
* @ORM\Column(type="boolean")
*/
private $rgpd;
/**
* @ORM\ManyToOne(targetEntity=Comment::class, inversedBy="reply")
*/
private $parent;
/**
* @ORM\OneToMany(targetEntity=Comment::class, mappedBy="parent")
*/
private $reply;
public function __construct()
{
$this->reply = new ArrayCollection();
}
public function getId(): ?int
{
return $this->id;
}
public function getEmail(): ?string
{
return $this->email;
}
public function setEmail(string $email): self
{
$this->email = $email;
return $this;
}
public function getContent(): ?string
{
return $this->content;
}
public function setContent(string $content): self
{
$this->content = $content;
return $this;
}
public function getCreatedAt(): ?\DateTimeImmutable
{
return $this->createdAt;
}
public function setCreatedAt(\DateTimeImmutable $createdAt): self
{
$this->createdAt = $createdAt;
return $this;
}
public function getArticle(): ?Article
{
return $this->article;
}
public function setArticle(?Article $article): self
{
$this->article = $article;
return $this;
}
public function getPublished(): ?bool
{
return $this->published;
}
public function setPublished(bool $published): self
{
$this->published = $published;
return $this;
}
public function getPseudo(): ?string
{
return $this->pseudo;
}
public function setPseudo(string $pseudo): self
{
$this->pseudo = $pseudo;
return $this;
}
public function getRgpd(): ?bool
{
return $this->rgpd;
}
public function setRgpd(bool $rgpd): self
{
$this->rgpd = $rgpd;
return $this;
}
public function getParent(): ?self
{
return $this->parent;
}
public function setParent(?self $parent): self
{
$this->parent = $parent;
return $this;
}
/**
* @return Collection|self[]
*/
public function getReply(): Collection
{
return $this->reply;
}
public function addReply(self $reply): self
{
if (!$this->reply->contains($reply)) {
$this->reply[] = $reply;
$reply->setParent($this);
}
return $this;
}
public function removeReply(self $reply): self
{
if ($this->reply->removeElement($reply)) {
// set the owning side to null (unless already changed)
if ($reply->getParent() === $this) {
$reply->setParent(null);
}
}
return $this;
}
}
I thank you for your help
source https://stackoverflow.com/questions/70481850/it-is-not-a-valid-class-check-the-name
Comments
Post a Comment