Я немного беспокоюсь о форме на Symfony 4! На самом деле у меня есть страница, где я отображаю группы. Среди этих групп есть группа, которая является группой по умолчанию. Я имею право удалять группы. Но если я решу удалить группу по умолчанию, у меня появится модальное окно, в котором мне будет предложено выбрать новую группу по умолчанию. Это контекст размещен. Теперь я сообщу о проблеме ^^ Итак, я создал свою форму, которая будет содержать список всех групп, кроме группы по умолчанию, обязательно
форма (DeleteDefaultGroupeType):
class DeleteDefaultGroupeType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('defaultGroupeValidateurs', ChoiceType::class, [
'label' => "Service par défaut",
'placeholder' => "Sélectionnez un service",
'choices' => $options['groupeValidateursService']->getNotDefaultGroups(),
'choice_label' => function ($choice, $key, $value) {
return $choice->getNom();
}
]);
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => ParametresAdmin::class,
'groupeValidateursService' => GroupeValidateursService::class,
]);
}
}
В моей функции index () моего контроллера я инициализирую эту форму и отправляю ее в качестве параметра для просмотра. Затем, на мой взгляд, я загружаю модальное окно на тот случай, если я хочу удалить группу по умолчанию. Так что это хорошо, у меня есть мое модальное окно с формой, которая позволяет мне выбрать новую группу по умолчанию!
Контроллер (индексная функция):
$formDeleteDefaultGroupe = $this->createForm(DeleteDefaultGroupeType::class, $parametresAdmin, [
"groupeValidateursService" => $this->groupeValidateursService
]);
$formDeleteDefaultGroupe->handleRequest($request);
Inмой веточка вид, я вставляю модал:
<button class="btn close" data-target="#deleteModal{{groupe.id}}" data-toggle="modal" type="button">
<span aria-hidden="true">×</span>
</button>
{% if groupe == parametresAdmin.defaultGroupeValidateurs %}
{{ macro.replace_default_group(
'deleteModal'~groupe.id,
'Delete group ?',
formDeleteDefaultGroupe,
path('admin_validation_delete',{'id': groupe.id}))
}}
{% else %}
и модал:
{%- macro replace_default_group(id, body, form, deleteLink) -%}
{% filter spaceless %}
<div id="{{ id }}" class="modal fade" role="dialog">
<div class="modal-dialog">
<div class="modal-content">
{{form_start(form)}}
<div class="modal-header">
<h4 class="modal-title">Supprimer?</h4>
<button class="close" data-dismiss="modal" type="button">×</button>
</div>
<div class="modal-body">
<p>{{ body }}</p>
{{form_widget(form)}}
</div>
<div class="modal-footer">
<a href="{{ deleteLink }}" class="btn btn-primary">Supprimer</a>
<button class="btn btn-secondary" data-dismiss="modal" type="button">Annuler</button>
</div>
{{form_end(form)}}
</div>
</div>
</div>
{% endfilter %}
{%- endmacro -%}
И так действует моя формабудет на функцию deleteGroupe () моего контроллера. Он будет указывать ему в качестве параметра группу, которую ему придется удалить. Эта переменная является groupValidators $ groupValidators в функции. И поэтому в моем контроллере я повторно инициализирую форму, позволяя мне выбрать новую группу. И если он отправлен, это означает, что я попытался удалить группу по умолчанию, поэтому нам придется применить изменения. Поэтому я должен восстановить то, что было отправлено в форме, а именно новую группу, которая будет группой по умолчанию
/**
* Suppression d'un groupe de validateurs et transfert des demandes
* en attentes des utilisateurs vers le groupe par défaut
*
* @Route("/admin/validation/delete/{id}", name="admin_validation_delete")
*
* @param GroupeValidateurs $groupeValidateurs
* @return void
*/
public function deleteGroupe(Request $request, GroupeValidateurs $groupeValidateurs)
{
$form = $this->createForm(DeleteDefaultGroupeType::class, new ParametresAdmin(), [
"groupeValidateursService" => $this->groupeValidateursService,
]);
$form->handleRequest($request);
dump($form->getData());
if ($form->isSubmitted() && $form->isValid()) {
$newDefaultGroupe = $form->getData();
dd($newDefaultGroupe);
//Et là je modifie le groupe par défaut
}
dd('fin');
//Et ici je supprime le groupe que je veux supprimer
$this->groupeValidateursService->removeGroup($groupeValidateurs);
return $this->redirectToRoute("admin_validation_index");
}
За исключением того, что, как ни странно, она не входит в isSubmitted && isValid. И если я создаю $ form-> getData () вне условия, чтобы увидеть, то я получаю объект ParametresAdmin (), но в нуле. То, что было представлено, не было учтено