No_*_*ame 7 symfony-forms symfony doctrine-orm
我有一个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 _
Run Code Online (Sandbox Code Playgroud)
无论用户是否喜欢其他用户,所有空白都是复选框.下划线被禁用复选框,因为用户不能喜欢自己.我应该使用choice_list吗?我想像这样处理输入:
foreach(guests as guest)//horizontal
{
foreach(guests as other)//vertical
{
if(guest != other && guest.likes(other) && other.likes(guest))
{
//do something
}
}
}
Run Code Online (Sandbox Code Playgroud)
我如何使用formbuilder来实现这样的目标?
小智 1
这种形式不符合您的需求吗?
$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();
Run Code Online (Sandbox Code Playgroud)
对于该用户数组,检查用户 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
Run Code Online (Sandbox Code Playgroud)
当您渲染表单时,您可以迭代表单中的每个项目,然后对于每个项目,您可以迭代每个选项并禁用您想要的选项:
{% for formWidget in classForm %}
{{ form_label(formWidget) }}
{% for child in formWidget %}
{{ form_widget(child) }}</td>
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
当然,您可以对表单中的行和选择使用不同的数组,从而实现您想要的结构。
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |