代码之家  ›  专栏  ›  技术社区  ›  Xubba

如何获取Symfony嵌入式动态表单的未映射数据

  •  0
  • Xubba  · 技术社区  · 1 年前

    我有一个动态表单,它是动态生成的,如下所示。

    <input type="hidden" id="project_teams_18_cropped_file_key" name="project[teams][1][cropped_file_key]" class="cropped_file_key">
    <input type="hidden" id="project_teams_18_cropped_file_key" name="project[teams][2][cropped_file_key]" class="cropped_file_key">
    <input type="hidden" id="project_teams_18_cropped_file_key" name="project[teams][8][cropped_file_key]" class="cropped_file_key">
    .....
    <input type="hidden" id="project_teams_18_cropped_file_key" name="project[teams][dynamic_key][cropped_file_key]" class="cropped_file_key">
    

    表单类型:

    ->add('cropped_file_key', HiddenType::class, [
        'mapped' => false
    ])
    

    由于表单输入键是按随机顺序排列的,我做不到 foreach($project->getTeams() as $key => $value){} 因为$key以序列方式运行。

    我试过了 $form->get('cropped_file_key') 它不起作用,它要钥匙。 获得这种动态表单输入值的最佳方式是什么?

    0 回复  |  直到 1 年前
        1
  •  0
  •   Skunka    1 年前

    您的FormType是父窗体还是CollectionType类型的子窗体?

    如果是子窗体,如本文所述 Access Embedded Form Data ,您可以尝试以下操作:

    foreach ($project->getTeams() as $key => $coordinator) { 
        $coordinatorImage = $teamImageUpload->uploadTeamImage(
                $form->get('teams')[$key]['cropped_file']->getData(), 
                $coordinator
        ); 
        $coordinator->setImage($coordinatorImage); 
    }
    

    这将允许您浏览您的收藏并查看其中包含的内容。

    否则,您应该考虑使用 Embedded collection of Forms 来自Symfony文档。