我有一个Event实体,People的实体可以参加。活动结束后,活动的主持人坐下来,应该会看到一个这样的表单。
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吗?我想像这样处理输入:
foreach(guests as guest)//horizontal
{
foreach(guests as other)//vertical
{
if(guest != other && guest.likes(other) && other.likes(guest))
{
//do something
}
}
}我该如何使用表单生成器来实现这样的功能呢?
发布于 2014-03-15 06:02:07
这种形式不适合您的需求吗?
$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的第四个用户,结果如下所示。
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当您呈现表单时,您可以迭代表单中的每一项,然后对于每一项,您可以迭代每一个选项并禁用您想要的选项:
{% for formWidget in classForm %}
{{ form_label(formWidget) }}
{% for child in formWidget %}
{{ form_widget(child) }}</td>
{% endfor %}
{% endfor %}当然,您可以对表单中的行和选择使用不同的数组,从而实现所需的结构。
https://stackoverflow.com/questions/22391014
复制相似问题