Я создаю рекламную платформу, я только что создал сущность Booking и ее форму, но после того, как форма была отправлена, значение 'amount' устанавливается в null, но не должно быть null.
Я создал функцию prePersist для установки свойства количества перед сбросом.
Вот функция prePersist в моей сущности Бронирование
* @ORM\PrePersist
*
* @return void
*/
public function prePersist()
{
if(empty($this->createdAt))
{
$this->createdAt = new \DateTime();
}
if(empty($this->amount))
{
$this->amount = $this->ad->getPrice() * $this->getDuration();
}
}
public function getDuration()
{
$diff = $this->endDate->diff($this->startDate);
return $this->days;
}
Мой контроллер бронирования
/**
* @Route("/annonces/{id}/booking", name="ad_booking")
* @IsGranted("ROLE_USER")
*/
public function booking(Ad $ad, Request $request, ObjectManager $manager)
{
$booking = new Booking;
$form = $this->createForm(BookingType::class, $booking);
$user = $this->getUser();
$booking->setBooker($user)
->setAd($ad);
$form->handleRequest($request);
if($form->isSubmitted() && $form->isValid())
{
$manager->persist($booking);
$manager->flush();
return $this->redirectToRoute('booking_success', [
'id' => $booking->getId()
]);
}
return $this->render('booking/booking.html.twig', [
'ad' => $ad,
'bookingForm' => $form->createView()
]);
}
}
Не работает, когда пользователь определен с помощью $ this-> getUser (); в подаче и проверке достоверности. Это впервые, когда я начал изучать Symfony. Я уверен, что я что-то забыл, но я потратил так много времени на размышления о том, что, что я не вижу ответа.
и моя форма BookingType
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('startDate', DateType::class, [
'label' => 'Date de début de prestatation',
'widget' => 'single_text'
])
->add('endDate', DateType::class, [
'label' => 'Date de fin de prestatation',
'widget' => 'single_text'
])
;
}
Пока форма отправлена, она должна вызвать функцию prePersist, а затем установить свойство количества, но она возвращается к нулю. Я действительно не понимаю, что я пропустил.