php - 如何在 Symfony 表单中通过会话获取表单数据
问题描述
几个小时以来,我一直在寻找解决方案。我正在使用 Symfony 3.2。
我正在使用 Symfony 表单来显示带有 Ajax => 无提交按钮的数据表(在表单中选择了不同的过滤器)。
我可以访问数据表的不同结果以查看更多信息。
我想要的是,当我通过单击按钮离开详细页面并返回研究页面时,我可以将我选择的所有过滤器保留在历史记录中。
我想使用会话,但实际上,它似乎有 0 影响。下面是一些代码。
控制器:
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',
]);
}
我有一个问题,我的表单构建器中有一个名为“job”的 EntityType(或 Select2EntityType)字段,我无法在会话中获取该字段的内容。此字段在输入 2 个字母后显示自动完成数据列表,我们可以选择其中一项工作。
而且,当我刷新页面时,我会丢失所有过滤器,但我应该将它们存储在会话中?
在此先感谢您的帮助,
解决方案
是的,您可以使用$form->getData()
,但要做到这一点,您需要根据此处的文档使用 using来执行此操作if ($form->isSubmitted() && $form->isValid()) {
。
推荐阅读
- c - 使用 freeRTOS 队列 API 或使用自定义数据结构在 freeRTOS 应用程序中创建队列更好吗?
- reactjs - 如何在 React JS 上重置组件 Dropzone?
- typescript - 我可以直接访问 DI 注入器以使用 NestJS 实例化类吗
- c# - 将 MediatR 从 MVC 项目移动到 Razor Pages。无法使基本语法正常工作
- regex - 在 Angular 7 应用程序中,如何修改此掩码输入以允许“-”或数字作为第一个字符,以及所有其他字符作为数字?
- javascript - 如何在 Puppeteer 中的 await page.addScriptTag({url: 'https://code.jquery.com/jquery-3.2.1.min.js'}) 之后等待加载 jquery?
- php - Laravel MongoDB 聚合
- java - 如何执行 Spring Boot 配置文件并使用 java -jar 命令以及 mvn spring-boot:run 命令传入命令行参数?
- azure - 在 azure 中禁用子网之间的通信
- xamarin.forms - viewList itemSource 中的 System.NullReferenceException