【问题标题】:getting all checked boxes in a twig view and use them in a session在树枝视图中获取所有复选框并在会话中使用它们
【发布时间】:2017-05-23 20:05:39
【问题描述】:

我正在使用 Symfony / twig。

我有一个名为 GroupesOfCompetences 的集合,其中包含许多 GroupeOfCompetence。 每个 GroupeOfCompetence 都包含一组能力

我希望能够获得在一个表单中检查的所有能力,其代码是:

<form action="{{ path('app_profil_traitement_competences') }}" method="post">

    {% set i = 1 %}

    {% for GroupeOfCompetence in GroupesOfCompetences %}
    name of the group of competences : {{ GroupeOfCompetence.name }}
    <ul>    
        {% for competence in GroupeOfCompetence.competences %}   
        <input type="checkbox" name= {{ 'competence' ~ i }} value='{{ competence.name }}'> {{ competence.name }} <br>
        {% set i = i + 1 %}
        {% endfor %}    
    </ul>
    <br> <br>
    {% endfor %}

    <input type="submit" value="Submit"/>

</form>

我应该如何设置复选框的名称和值,以便能够获取在 '$request->getSession();' 对象中选中的复选框?

提前致谢!

【问题讨论】:

  • var x=$("checkbox").is(":checked") 如果你使用 jQuery。或者在控制器上的请求中获取它们,然后将它们添加到您的会话中。
  • Twig 用于渲染。您应该更改您的控制器操作,以便它构建一个包含所有渲染所需数据的对象的数组
  • 是的,Frank B。但这太复杂了。我希望我可以得到被选中的权限,然后从这些选中的复选框中构建对象,然后将它们注入到权限和其他实体(在我的例子中是用户)之间的关系中......
  • 是的,Albeis 这可能是一个解决方案。但是如何设置每个复选框的名称,以便您可以知道检查了哪些权限。以及如何将这些信息发送到操作路径?
  • @zskiredj :表单按名称属性将值发送到操作 url。在您的控制器上,按名称获取复选框。 $request->request->get('"checkbox name'),对于每个复选框,因此,在 Controller 上,您必须检查是否检查了权限。

标签: php symfony session twig


【解决方案1】:

解决方法很简单:使用权限实体的 id 作为名称! 为了检索被检查的对象,我在请求对象中使用了这个 id。无需使用表单或实体的集合...

如果它可以帮助某人,这是代码:

树枝:

<form action="{{ path('app_profil_traitement_competences') }}" method="post">

{% for GroupeCompetence in GroupesCompetences %}
    nom groupe competence : {{ GroupeCompetence.nom }}
    <ul>    
    {% for competence in GroupeCompetence.competences %}     
    <input type="checkbox" name= '{{ competence.id }}' value='{{ competence.id }}'> {{ competence.nom }} <br>
    {% endfor %}    
    </ul>
        <br> <br>
{% endfor %}

<input type="submit" value="Submit"/>
</form>

Symfony:

public function traiterCompetencesAction(Request $request)
    {

        for ($i=1;$i<10;$i++)
        {   
            if ($request->get($i) !== null)

            //... And here i have the id of the objects which are checked!!
        }
        ...
    }

【讨论】:

  • 其实如果使用POST方式,应该使用$request->request->get($i)。问候
  • @Albeis : $request->get($i) 有效,因为我在控制器中使用 $request 作为参数! :=)
  • 好的!但你应该在你的答案中指定它:) 问候
猜你喜欢
  • 2016-02-13
  • 2021-07-16
  • 2022-08-14
  • 2023-01-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多