问题描述
我在这里回答问题: One form with all row of one entity
我的文件是:
PermissionCollectionType:
class PermissionsCollectionType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('permissions',CollectionType::class,[
'entry_type' => PermissionsContentsType::class,])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => null
));
}
}
PermissionsContentsType:
class PermissionsContentsType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder,array $options)
{
$builder
->add('name',TextType::class,[
'label' => 'Name','attr' => [
'placeholder' => 'Name'
]
])
->add('view',CheckboxType::class,[
'mapped' => false,'required' => false,'label' => false
])
->add('new','label' => false
])
->add('edit','label' => false
])
->add('delete','label' => false
])
->add('accept','label' => false
])
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => Categories::class
]);
}
}
控制器:
public function permissionsAction(Request $request,EntityManagerInterface $em,$role,$type,UserInterface $user)
{
$categoriesRepository = $em->getRepository('App:Categories');
$list = $categoriesRepository->findAll();
$form = $this->createForm(PermissionsCollectionType::class,$list);
$form->handleRequest($request);
return $this->render('Acl\permissionForm.html.twig',[
'list' => $list,'form' => $form->createView(),]);
}
嫩枝:
{% extends 'base.html.twig' %}
{% block body %}
{{ form(form) }}
{% endblock %}
不幸的是,该表单仅显示单词'Permissions',仅此而已,就像列表不存在一样。可能是什么问题或如何解决?
解决方法
您的PermissionCollectionType
将调查您的$list
数组以找到permissions
键,该键不存在。要解决此问题,请尝试在将密钥提供给表单之前进行设置(就像在链接的问题+答案中所做的那样):
//...
$list = array('permissions' => $list);
$form = $this->createForm(PermissionsCollectionType::class,$list);
//...