У меня есть проект Symfony 4, в котором я пытаюсь настроить коллекцию форм с этим formType:
$builder
->add('absences', CollectionType::class, [
'entry_type' => AbsenceType::class,
'entry_options' => [
'label' => false,
],
'allow_add' => true,
'allow_delete' => true,
'delete_empty' => true,
'by_reference' => true,
'prototype' => true,
'label' => false,
'attr' => array(
'class' => 'my-selector',
'label' => false,
),
])
->add('feuilleConge', FeuilleCongeType::class, [
"required" => false,
'label' => false,
]);
И поэтому у меня будет несколько раз форма AbsenceType.Но мне бы хотелось каждый раз, когда эта форма отображается так, как я хочу.Поэтому я создал страницу, где я размещаю поля формы AbsenceType так, как я хочу:
$builder
->add('dateDebut', TextType::class, $this->getConfiguration("Débute le", "Date de début du congé"))
->add('momentDebut', ChoiceType::class, [
'label' => false, //...
'choices' => [
"matin" => "matin",
"après-midi" => "après-midi",
"journée" => "journée"
],
'expanded' => true,
'multiple' => false
])
->add('dateFin', TextType::class, $this->getConfiguration("Retour le", "Date de fin du congé"))
->add('momentFin', ChoiceType::class, [
'label' => false, //...
'choices' => [
"matin" => "matin",
"après-midi" => "après-midi"
],
'expanded' => true,
'multiple' => false
])
->add('heureDebut', TimeType::class, [
"required" => false,
])
->add('heureFin', TimeType::class, [
"required" => false,
])
->add('typeConge', EntityType::class, [
'class' => TypeConge::class,
'label' => false,
'placeholder' => "Type d'absence",
'choice_label' => 'nom',
'choice_value' => 'nom',
])
->add('commentaire', TextType::class, $this->getConfiguration("Commentaire", "Commentaire (facultatif)", [
'required' => false,
]))
->add('feuilleConge', FeuilleCongeType::class, [
"required" => false,
'label' => false,
]);
С помощью этого файла ветки
{% extends "base.html.twig" %}
{% block stylesheets %}<link crossorigin="anonymous" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.9.0/css/bootstrap-datepicker.min.css" integrity="sha256-siyOpF/pBWUPgIcQi17TLBkjvNgNQArcmwJB8YvkAgg=" rel="stylesheet"/>
{% endblock %}
{% block body %}
{{form_start(form)}}
<h1>Déclarer une absence</h1><br/>
<div class="row">
<div class="col-md-6">
<div class="jumbotron">
<div class="row">
<div class="col-6">
<div id="typeConge">
{{form_row(form.typeConge, {'attr': {'onchange': 'choiceTypeConge(this)'}})}}
</div>
</div>
<div class="col-6">
<div id="choixPeriode">
<select class="browser-default custom-select" name="choiceUser" id="choiceUser" onchange="choiceDay(this)">
<option value="" disabled selected>Durée de l'absence</option>
<option value="jour">La journée</option>
<option value="periode">Du xx au xx</option>
</select>
</div>
</div>
</div>
<br><br>
<div id="absence">
<div id="momentDebut">
<div class="row align-items-center">
<div class="col-7">
{{form_row(form.dateDebut)}}
</div>
<div class="col-5">
{{form_row(form.momentDebut)}}
<div id="formHeures">
{{form_row(form.heureDebut)}}
{{form_row(form.heureFin)}}
</div>
</div>
</div>
</div>
<div id="momentFin">
<div class="row align-items-end">
<div class="col-8">
{{form_row(form.dateFin)}}
</div>
<div class="col-4">
{{form_row(form.momentFin)}}
</div>
</div>
</div>
{{form_row(form.feuilleConge)}}
{{form_row(form.commentaire)}}
<button class="btn btn-primary" type="submit">Enregistrer</button>
<a href="{{path('absence_index')}}" class="btn btn-primary">Annuler</a>
{{form_end(form)}}
</div>
</div>
</div>
</div>
{% endblock %}
Я хотел бы знать, как я могу превратить это всвоего рода тема формы, чтобы на моей странице ветки, связанной с формой сбора отсутствий, когда я выполняю {{form_row (form.absences)}}, которая вызывает вызов моего AbsenceType, он будет отображаться точно так, как я решил в другом файле?