Как сохранить данные формы при просмотре постраничного вывода? - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть форма Symfony, которая содержит длинный список элементов с флажками.Я успешно выполнил работу knp paginator, и теперь форма разбита на страницы.Однако, когда я перемещаюсь между страницами, я теряю отмеченный / непроверенный статус флажков.Я уверен, что это, вероятно, довольно легко, но я не могу решить это.Я еще не очень разбираюсь в php.

Вот мой контроллер:

    /**
     * @Route("/addquestions/{quizid}", name="addquestions")
     */
    public function add(Request $request, PaginatorInterface $paginator, $quizid)
    {
        $repository = $this->getDoctrine()->getRepository(Quiz::class);
        $quiz = $repository->find($quizid);

        $repository = $this->getDoctrine()->getRepository(Question::class);
        $questions = $repository->findAll();

        // Paginate the results of the query
        $pagination = $paginator->paginate($questions, $request->query->getInt('page', 1), 3);

        $form = $this->createForm(AddQuizQuestionType::class, $quiz, ["pagination" => $pagination]);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $questions = $form->get('question')->getData();
            foreach ($questions as $question){
                $quizquestion = new QuizQuestion();
                $quizquestion->setQuestion($question);
                $quiz->addQuizQuestion($quizquestion);
            }
            $entityManager = $this->getDoctrine()->getManager();
            $entityManager->persist($quiz);
            $entityManager->flush();
            return $this->redirectToRoute('homepage');
        }

        return $this->render('editquiz/addquestions.html.twig', [
            'form' => $form->createView(),
            'pagination' => $pagination,
        ]);
    }

И моя форма - он использует разбитый на страницы запрос для отображения элементов с флажком.

class AddQuizQuestionType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('question', EntityType::class, [
                'expanded' => true,
                'multiple' => true,
                'class' => Question::class,
                'mapped' => false,
                'choices' => $options['pagination'],
            ])
            ->add('submit', SubmitType::class, [
                'label' => 'Submit',
            ])
            ->setMethod('GET')
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            'data_class' => Quiz::class,
            'pagination'    => null,
        ]);
    }
}

и мой шаблон - он отображает флажки с изображениями из базы данных.

{% extends 'base.html.twig' %}
{% block title %}CreatequizController{% endblock %}
{% block body %}
<h1>Create Quiz</h1>
{{ form_start(form) }}
{% for question in form.question %}
<h5>Question {{ question.vars.value }}</h5>
<div class="border mb-5">
  <img src="{{ asset(question.vars.label) }}" alt=""/>
  <div class="pl-3">
    {{ form_widget(question) }}
  </div>
</div>
{% endfor %}
<div class="navigation">{{ knp_pagination_render(pagination) }}</div>
{{ form_end(form) }}
{% endblock %}

Мне бы хотелось, чтобы при переходе между страницами выбранные флажки оставались отмеченными.

Заранее спасибо,

Мартын

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