我已经使用Symfony一段时间了,并且已经在另一个项目中使用Unique Entity进行了验证,并且可以正常工作。我正在尝试创建一个新项目,由于某种原因,唯一实体不会阻止我插入重复的字段。
$timetable = new Timetable();
$form = $this->createFormBuilder()
->add("name", TextType::class, ["label"=>"Nazwa","attr"=>["class"=>"form-control"]])
->add(
"year",
ChoiceType::class,
["label" => "Rok", "choices" => $years, "attr" => ["class" => "form-control"]]
)
->add(
"month",
ChoiceType::class,
["label" => "Miesiąc", "choices" => $months, "attr" => ["class" => "form-control"]]
)
->add("dodaj",
SubmitType::class,
["attr"=>["class"=>"btn btn-primary btn-block mt-3"]]
)
->getForm();
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid() ){
$month = $form["month"]->getData();
$year = $form["year"]->getData();
$name = $form["name"]->getData();
$date = new \DateTime("$month.01.$year");
$timetable->setDate($date);
$timetable->setName($name);
$em = $this->getDoctrine()->getManager();
$em->persist($timetable);
$em->flush();
return $this->redirect("/newtimetable");
}
这是我的实体类:
<?php
namespace App\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity(repositoryClass="App\Repository\TimetableRepository")
* @UniqueEntity("date",message="The date is not unique")
*
*/
class Timetable
{
/**
* @ORM\Id()
* @ORM\GeneratedValue()
* @ORM\Column(type="integer")
*/
private $id;
/**
* @ORM\Column(type="string", length=255, name="name")
*/
private $name;
/**
* @ORM\Column(type="date", unique=true, name="date")
*/
private $date;
public function getId(): ?int
{
return $this->id;
}
public function getName(): ?string
{
return $this->name;
}
public function setName(string $name): self
{
$this->name = $name;
return $this;
}
public function getDate(): ?\DateTimeInterface
{
return $this->date;
}
public function setDate(\DateTimeInterface $date): self
{
$this->date = $date;
return $this;
}
}
基本上,我想创建一个具有唯一日期字段的时间表对象。我没有收到任何错误,该表格可以正常工作并创建一个新条目。 我在其他领域尝试过同样的事情,并且验证仍然无法正常工作。 有人可以给我一些如何使它工作的提示吗? 谢谢。
答案 0 :(得分:0)
这个答案可能为时已晚,但我们永远不知道......
在 UniqueEntity 的注释中,您缺少参数字段。所以它应该像这样工作:
* @UniqueEntity(fields="date", message="The date is not unique")