В административной панели, созданной с помощью EasyAdminBundle, администратор может создать новое бронирование.Я хочу добавить проверку доступности (через службу), прежде чем этот новый экземпляр бронирования будет сохранен в базе данных.Если эта проверка возвращает false, администратор должен быть перенаправлен обратно в форму.
Я расширил класс EasyCorp\Bundle\EasyAdminBundle\Controller\AdminController
и переопределил функцию persistEntity()
:
...
use EasyCorp\Bundle\EasyAdminBundle\Controller\AdminController as BaseAdminController;
class BookingController extends BaseAdminController
{
private $availabilityService;
public function __construct(AvailabilityService $availabilityService)
{
$this->availabilityService = $availabilityService;
}
protected function persistEntity($booking)
{
$checkin = Carbon::instance($booking->getCheckin());
$checkout = Carbon::instance($booking->getCheckout());
if($this->availabilityService->checkAvailability($checkin, $checkout)) {
parent::persistEntity($booking);
} else {
return false; //redirect back to the form
}
}
}