$submittedData The submitted participant form data * @param string $mode The booking mode (BookingDto::MODE_CREATE or MODE_EDIT) * @param int $participantIndex The index of the participant being processed * * @return bool Always returns true for transportation selection fields */ public function shouldProcess(array $submittedData, string $mode, int $participantIndex): bool { return true; // Always process to handle deselection cases } public function processField(array $submittedData, BookingDto $bookingDto, int $participantIndex): void { $participant = $this->getParticipant($bookingDto, $participantIndex); if (null === $participant) { return; } $selectedTransportation = $this->getFieldValue($submittedData, $this->getFieldName()); // Get all inbound transportation services (availability filtering happens at form level) $services = $bookingDto->travel->getTransportationServicesByDirection( DirectionMapper::INBOUND_TRAVEL ); // Validate and update participant with selection $participant->transportationInbound = $this->findItemById($selectedTransportation, $services); } }