首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Symfony表单设计

Symfony表单设计
EN

Stack Overflow用户
提问于 2014-03-14 05:12:12
回答 1查看 191关注 0票数 7

我有一个Event实体,People的实体可以参加。活动结束后,活动的主持人坐下来,应该会看到一个这样的表单。

代码语言:javascript
复制
         user a    user b     user c      user d     user e    user f     user g
user a     _
user b               _
user c                          _
user d                                      _
user e                                                 _
user f                                                           _
user g                                                                      _

所有的空白都是一个用户是否喜欢另一个用户的复选框。下划线是禁用的复选框,因为用户不能喜欢自己。我应该使用choice_list吗?我想像这样处理输入:

代码语言:javascript
复制
foreach(guests as guest)//horizontal
{
    foreach(guests as other)//vertical
    {
         if(guest != other && guest.likes(other) && other.likes(guest))
         {
             //do something
         }
    }
}

我该如何使用表单生成器来实现这样的功能呢?

EN

回答 1

Stack Overflow用户

发布于 2014-03-15 06:02:07

这种形式不适合您的需求吗?

代码语言:javascript
复制
$userIDsArray = $userIDsArray = array('1' => 'name1','2' => 'name2','3' => 'name3','4' => 'name4');

$form = $this->createFormBuilder($initialData);
    foreach($userIDsArray as $userId)
        $form->add($userId, 'choice', array(
                        'choices' => $userIDsArray,
                        'multiple' => true,
                        'expanded' => true 
                    )
                );
$form = $form->getForm();

对于这个用户数组,检查用户1的所有其他三个用户,只检查用户3的第四个用户,结果如下所示。

代码语言:javascript
复制
array (size=4)
  'name1' => 
    array (size=3)
      0 => int 2
      1 => int 3
      2 => int 4
  'name2' => 
    array (size=0)
      empty
  'name3' => 
    array (size=1)
      0 => int 4
  'name4' => 
    array (size=0)
      empty

当您呈现表单时,您可以迭代表单中的每一项,然后对于每一项,您可以迭代每一个选项并禁用您想要的选项:

代码语言:javascript
复制
{% for formWidget in classForm %}
    {{ form_label(formWidget) }}
    {% for child in formWidget %}
        {{ form_widget(child) }}</td>
    {% endfor %}
{% endfor %}

当然,您可以对表单中的行和选择使用不同的数组,从而实现所需的结构。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22391014

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档