【问题标题】:AngularJS and Symfony2 Forms or how to remove form's "action" attribute?AngularJS 和 Symfony2 表单或如何删除表单的“动作”属性?
【发布时间】:2015-04-14 11:46:46
【问题描述】:

我有 Symfony 表单 (FormType),想在客户端使用 AngularJS 和 ng-submit,但 Symfony 向表单添加了 action 属性,并且 ng-submit 不会阻止表单提交和页面重新加载。

2 种可能的解决方案:

  1. 如何删除 Symfony 表单中的 action 属性?
  2. 如何在 Angular 控制器中调用 preventDefault()(或类似名称)?

【问题讨论】:

  • 手动渲染表单模板怎么样?
  • @ferdynator 我正在使用 {{ form(myFormVar) }} 来呈现表单,但是如果我在 Twig 或 PHP 中将“action”属性设置为 NULL、FALSE、TRUE、“”等零结果——Symfony 将呈现带有空动作属性的表单。

标签: javascript php angularjs forms symfony


【解决方案1】:

好的,我找到了解决方案。我只是在我的基本表单主题中扩展 form_start 块:

{%- block form_start -%}
    {% set method = method|upper %}
    {%- if method in ["GET", "POST"] -%}
    {% set form_method = method %}
{%- else -%}
    {% set form_method = "POST" %}
{%- endif -%}
    <form name="{{ name }}" method="{{ form_method|lower }}" {% if action|length %}action="{{ action }}"{% endif %}{% for attrname, attrvalue in attr %} {{ attrname }}="{{ attrvalue }}"{% endfor %}{% if multipart %} enctype="multipart/form-data"{% endif %}>
    {%- if form_method != method -%}
    <input type="hidden" name="_method" value="{{ method }}" />
{%- endif -%}
{%- endblock form_start -%}

新增的是if

{% if action|length %}action="{{ action }}"{% endif %}

【讨论】:

  • 我怀疑这是唯一的解决方案。我现在正在搜索,稍后发布答案
猜你喜欢
  • 2013-03-22
  • 2013-12-02
  • 2017-05-21
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多