我正在 symfony 6 中为搜索功能制作一个控制器,然后使用“render_esi”方法从我的模板中调用它。 模板正在呈现表单,但是当我单击提交按钮时,除了刷新页面外没有任何反应。 这是控制器:
#[Route('/sav/search', name: 'app_sav_search', methods: ['GET'])]
public function index(Request $request, ContratRepository $contratRepository): Response
{
$savSearch = new SAVSearch;
$form = $this->createForm(SAVSearchType::class, $savSearch);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
dd('Hi');
}
return $this->render('sav_search/_search-form.html.twig', [
'form' => $form->createView(),
]);
}
我添加了 dd('hi') 只是为了测试是否正在提交表单,但事实并非如此。
这是我在我的模板上调用它的方式:
{{ render_esi(controller('App\\Controller\\SAVSearchController::index')) }}
我在其他地方的同一个项目中遇到了这个确切的问题,但我最终没有使用 render_esi。但是我需要在多个页面中使用搜索功能。
这也是我的表格:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('nom', TextType::class, [
'required' => false,
'label' => false,
'attr' => [
'placeholder' => 'Recherchez ici',
'class' => 'form-control search-input mr-sm-2',
'aria-label' => 'Search',
'autocomplete' => 'off',
'spellcheck' => 'false',
],
])
->add('submit', SubmitType::class, [
'attr' => [
'class' => 'btn btn-outline-secondary',
]
])
;
}
最后,表单模板:
{{ form_start(form, {'attr': {'class': 'row col p-2'}}) }}
<div class="col">
{{ form_row(form.nom) }}
</div>
<div class="col">
{{ form_row(form.submit) }}
</div>
{{ form_end(form) }}
我错过了什么吗?还是我应该使用另一种方法?我需要任何帮助
PS:正在发送请求,我可以在我的分析器中看到它。
有两种可能。
你能在你的问题中提到实体
SAVSearch
字段吗?可能是字段不可为空,而您提交时没有任何价值?
在控制器路由中,也请允许
POST
方法。
提交表格后,请在分析器中检查表格验证或
Number of Errors
,以便您从那里得到更好的主意。