Как получить данные формы с помощью сеанса в форме Symfony

#php #symfony

Вопрос:

Я уже несколько часов ищу решение. Я работаю с Symfony 3.2.

Я использую формы Symfony для отображения таблицы данных (с другим фильтром, выбранным в форме) с Ajax => Без кнопки отправки.

Я могу получить доступ к другому результату таблицы данных, чтобы просмотреть дополнительную информацию.

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

я хотел использовать сеанс, но на самом деле, похоже, он не влияет. Ниже приведены некоторые коды.

Контроллер:

     public function indexAction(Request $request)
        {
            $form = $this->createSearchForm();
    
            $request->getSession()->set('form_data', $form->getData());

            $form->handleRequest($request);

            $form->setData($request->getSession()->get('form_data'));
   
            $this->datatable($form->getData());
    
            return $this->render('backend/jobOffer/index.html.twig', [
                'form' => $form->createView()
            ]);
        }
 

Тип формы

  public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('publicationState', ChoiceType::class, [
                'label'                     => 'backend.job_offer.publication_state',
                'required'                  => false,
                'choices'                   => JobOffer::getPublicationStateChoices(),
                'choice_translation_domain' => 'choices',
            ])
            ->add('job', Select2EntityType::class, [
                'label'         => 'backend.job',
                'required'      => false,
                'class'         => 'AppBundle:Job',
                'text_property' => 'label',
                'remote_route'  => 'job_autocomplete',
            ])
            ->add('ids', HiddenType::class, [
                'required'                  => false,
            ])
   }

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults([
        'csrf_protection' => false,
        'method'          => 'GET',
    ]);
}
 

У меня проблема, в моем конструкторе форм есть поле EntityType (или Select2EntityType) с именем «задание», и я не могу получить содержимое этого поля в своем сеансе. В этом поле отображается список данных автозаполнения после ввода 2 букв, и мы можем выбрать одно из заданий.

а также, когда я обновляю страницу, я теряю все фильтры, но я должен хранить их в сеансе ?

Заранее спасибо за вашу помощь,

Ответ №1:

Да, вы можете использовать $form->getData() , но для этого вам нужно сделать это в соответствии с документом здесь if ($form->isSubmitted() amp;amp; $form->isValid()) { , в том числе с использованием.

Комментарии:

1. О, я думаю, именно поэтому я не мог правильно использовать $form->getData (), потому что он отображает данные с помощью вызова AJAX. Поэтому мне нужно переделать свою систему фильтров и отказаться от этой системы ajax.