Symfony 4 - Не удается получить доступ к данным формы - PullRequest
0 голосов
/ 09 октября 2019

Я немного беспокоюсь о форме на 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">&times;</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">&times;</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 (), но в нуле. То, что было представлено, не было учтено

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...