Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony收藏列表_Php_Symfony - Fatal编程技术网

Php Symfony收藏列表

Php Symfony收藏列表,php,symfony,Php,Symfony,我有: 在标记类型为的表单生成器中 ->add('skills', CollectionType::class, array( 'entry_type' => TagType::class, 'allow_add' => true, 'allow_delete' => true, )) 我试图做的是只在表单中发布标记ID,但使用这些标记的获取名称呈现表单。我试图: public function buil

我有:

在标记类型为的表单生成器中

    ->add('skills', CollectionType::class, array(
        'entry_type' => TagType::class,
        'allow_add'  => true,
        'allow_delete' => true,
    ))
我试图做的是只在表单中发布标记ID,但使用这些标记的获取名称呈现表单。我试图:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('id', IntegerType::class);
}

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\Tag',
    ));
}

但一旦我们到达
$form->handleRequest($request)整个表单没有标记的名称。

Symfony已经为您提供了这些情况的解决方案。这叫做数据转换器

这里有一个与您尝试做的类似的示例


我建议您从一开始就阅读整篇文章。

@nakashu我不建议您仅仅抓住一个代码示例并使用它。我给出的链接有很多解释,如果你想了解你在做什么,你必须阅读:)@Moein你不一定需要一个代码示例,但如果你能解释一下答案(在链接中给出),那就太好了。因此,即使链接断开(无论出于何种原因),您在这里的答案仍然有效,对访问者有用
if($request->getMethod() == 'POST')
{
  $form_arr = $request->request->get('form');
  $skills = (array_key_exists('skills', $form_arr)) ? $form_arr['skills'] : array();
  foreach($skills as $key => $role) { $skills[$key] = $role['id']; }
  if(count($skills) > 0)
  {
    $em->clear();
    $roles = $em->getRepository('AppBundle:Tag')->findById($skills);
    $project->setSkills($roles);
  }
}