Как я могу добавить одну «субперформу» для каждого дня в диапазонеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как я могу добавить одну «субперформу» для каждого дня в диапазоне

Сообщение Anonymous »

В настоящее время я разрабатываю небольшую CRM для отеля, и я сталкиваюсь с проблемой с динамическими формами. В форме комнаты пользователь предлагается выбрать дату начала и дату окончания бронирования. В этот момент я хочу показать своего рода подразформу, соответствующую завтраку. Я хочу одну из этих подчинений для каждой ночи в диапазоне (например: если бронирование за последние три ночи, я хочу там, подчинка). < /P>
Я попытался использовать динамические формы, но мне не удалось отображать какую-либо из форм ... < /p>
, вот извлечение из моей комнаты.

Код: Выделить всё

class RoomBookingsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('booking_date', DateType::class, [
'attr' => [
'id' => 'booking_date'
]
])
->add('start_date', DateType::class, [
'attr' => [
'id' => 'start_date'
]
])
->add('end_date', DateType::class, [
'attr' => [
'id' => 'end_date'
]
])

->add('client_name')
->add('client_email')
->add('client_phone')
->add('client_country', EntityType::class, [
'class' => Countries::class,
'placeholder' => 'Sélectionnez un pays', // optionnel
])

->add('nb_guest', IntegerType::class, [
'attr' => [
'min' => 1,
'value' => 1
]
])
->add('agency', ChoiceType::class, [
'choices' => [
'La Pèlerine' => 'La Pèlerine',
'La Balagère' => 'La Balagère',
'Follow the Camino' => 'Follow the Camino',
'La Rebène' => 'La Rebène',
'Via Compostella' => 'Via Compostella',
'Trekking Découverte' => 'Trekking Découverte',
'L\'Autre Chemin' => 'L\'Autre Chemin',
'Chemins de France' => 'Chemins de France',
'Sud Randos' => 'Sud Randos',
'S-Cape' => 'S-Cape',
'Grand Angle' => 'Grand Angle',
'Nature Occitane' => 'Nature Occitane',
'Autre' => 'Autre',
],
'placeholder' => 'Sélectionnez une agence', // optionnel
])
->add('booking_by', ChoiceType::class, [
'choices' => [
'Email' => 'Email',
'Téléphone' => 'Téléphone',
'Booking.com' => 'Booking.com',
'En personne' => 'En personne',
'Autre' => 'Autre',
],
'placeholder' => 'Sélectionnez un moyen de réservation', // optionnel
])
->add('payment_method', ChoiceType::class, [
'choices' => [
'Carte' => 'Carte',
'Espèces' => 'Espèces',
'Chèque' => 'Chèque',
'ANCV' => 'ANCV',
'Amex' => 'Amex',
'Virement' => 'Virement',
'Autre' => 'Autre',
],
'placeholder' => 'Sélectionnez une moyen de paiement', // optionnel
])
->add('paid')
->add('comment')
->add('nb_dinner', IntegerType::class, [
'attr' => [
'min' => 0,
'value' => 0
]
])
->add('nb_breakfast', IntegerType::class, [
'attr' => [
'min' => 0,
'value' => 0
]
])
->add('children')
->add('dog')
->add('room', EntityType::class, [
'class' => Rooms::class,
'placeholder' => 'Sélectionnez une chambre', // optionnel
])
;

$builder->addEventListener(
FormEvents::PRE_SET_DATA,
function (FormEvent $event): void {
$form = $event->getForm();

// this would be your entity, i.e.  SportMeetup
$data = $event->getData();

$startDate = $data->getStartDate();
$endDate = $data->getEndDate();
$duration = round(($endDate - $startDate) / (60 * 60 * 24));

// ??? what do I do ???
}
);
}

public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => RoomBookings::class,
]);
}
}
< /code>
myrabrakingstype: < /p>
class BreakfastsType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver): void
{
$resolver->setDefaults([
'data_class' => Breakfasts::class,
]);
}
public function buildForm(FormBuilderInterface $builder, array $options): void
{
$builder
->add('date', DateType::class, [
'widget' => 'single_text',
'disabled' => true,
])
->add('isTaken', CheckboxType::class, [
'required' => false,
'mapped' => false,
])
->add('nbGuest', IntegerType::class, [
'required' => true,
])
->add('comment', TextareaType::class, [
'required' => false,
]);
}
}
< /code>
Мой маршрут в комнате в комнате#[Route('/ajouter', name: 'app_room_bookings_new', methods: ['GET', 'POST'])]
public function new(Request $request, EntityManagerInterface $entityManager): Response
{
$roomBooking = new RoomBookings();
$form = $this->createForm(RoomBookingsType::class, $roomBooking);
$form->handleRequest($request);

if ($form->isSubmitted() && $form->isValid()) {
$entityManager->persist($roomBooking);
$entityManager->flush();

return $this->redirectToRoute('app_room_bookings_index', [], Response::HTTP_SEE_OTHER);
}

return $this->render('room_bookings/new.html.twig', [
'room_booking' => $roomBooking,
'form' => $form,
]);
}
I mostly tried the solution found in the different tutorial found on internet but nothing really match my expectations...

Подробнее здесь: https://stackoverflow.com/questions/797 ... in-a-range
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»