Я изучаю Symfony, и я начал проект Symfony (2.8.8 с php 5.6) для нового клиента. У меня есть объект с этими полями (PHP DateTime объекты):Symfony валидатор и сравнение дат
/**
* @var date
* @ORM\Column(name="startDate", type="date")
* @Assert\NotNull()
* @Assert\Date()
*/
private $startDate;
/**
* @var date
* @ORM\Column(name="endDate", type="date")
* @Assert\NotNull()
* @Assert\Date()
*/
private $endDate ;
Я хочу, чтобы проверить, что дата начала ранее даты окончания. Так что я написал валидатор в моей сущности:
/**
* @Assert\IsTrue(message="Start date must be earlier than end date".)
*/
public function isStartDate()
{
return $this->startDate < $this->endDate ;
}
В моем контроллере, я проверяю мою форму так:
$myEntity = new MyEntity();
$form = $this->createForm(MyEntityType::class, $myEntity);
try {
// Is form valid ?
if ($form->handleRequest($request)->isValid()) {
// Do things if form is Valid
}
}
Но результат всегда ложно, даже если STARTDATE раньше, чем ENDDATE .. Я знаю, что могу проверять даты в моем контроллере, но я хочу сделать это с помощью валидаторов Symfony. Как я могу сделать ?
Для начала вы можете отлаживать код и вставлять сюда то, что вы получаете в '$ this-> startDate' и' $ this-> endDate', когда вы проверяете? –
@JulienBourdic: они действительны для объектов php DateTime ... –