#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.