symfony - 嵌入式控制器中的表单未提交
问题描述
我将表单嵌入到模态中,我使用嵌入式控制器来处理这个问题。
这是我的代码:控制器:
public function affectProduitsAction(Pack $pack)
{
$request = $this->get('request_stack')->getMasterRequest();
$form = $this->createForm(PackAffectProduitType::class, $pack);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) { /*success*/
}
return $this->render('pack/affect_produits.html.twig', [
'packForm' => $form->createView(),
]);
}
布局:渲染嵌入式控制器:
<div class="button-add">
<a class="btn btn-sm btn-primary btn-upper" data-target="#modalAffectProduit" data-toggle="modal">
<i class="os-icon os-icon-ui-22"></i>
<span>Affecter des produits</span>
</a>
</div>
{{ render(controller(
'AppBundle:Pack:affectProduits',
{'pack': pack }
)) }}
模态:从嵌入式控制器呈现:
<div aria-hidden="true" aria-labelledby="exampleModalLabel" class="modal fade" id="modalAffectProduit" role="dialog" tabindex="-1">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">
Affecter des produits
</h5>
<button aria-label="Close" class="close" data-dismiss="modal" type="button"><span aria-hidden="true"> ×</span></button>
</div>
{{ form_start(packForm, {'action':
{# the problem is here I don't know how call the embedded controller #}
}) }}
<div class="modal-body">
......
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal" type="button"> Annuler</button>
<button class="btn btn-primary" type="button"> Affecter</button>
</div>
{{ form_end(packForm) }}
</div>
</div>
问题是:当我单击提交按钮时,什么也没发生。我想从表单操作中调用嵌入式控制器,但我不知道怎么做,因为它没有路由?
解决方案
我认为您应该将路由添加到您的控制器,然后表单才会知道发送请求的路径。并将 Request $request 参数添加到操作
public function affectProduitsAction(Request $request, Pack $pack)
{
.
.
.
并删除
$request = $this->get('request_stack')->getMasterRequest();
推荐阅读
- python - 使用正则表达式在标签和标签列表之间查找元素
- amazon-web-services - aws s3 ls 完全匹配
- c++ - 是否有使用 COM IFileBasedLogInit 或 ILog 接口的简单示例
- python - ValueError:您必须指定decoder_input_ids 或decoder_inputs_embeds
- database - 哪些 HTTP 标头与某些方法匹配?
- security - 看不懂XSS是怎么攻击伤害的
- c# - 无法在 Elasticsearch 对象语法中组合 2 个日期范围查询
- c# - 交叉连接 LINQ 查询转换为具有导航属性的 lambda
- javascript - 如何用函数式编程重写 JavaScript 类?
- swift - 我的 PDF 位置在本地应用程序文件中的位置是什么?- 斯威夫特用户界面