Forms 如何显示以下Symfony表单数据以生成固定文本字段?

Forms 如何显示以下Symfony表单数据以生成固定文本字段?,forms,drop-down-menu,symfony,Forms,Drop Down Menu,Symfony,我有下面的控制器和表单类型,它们循环生成每个成员的表单,如本屏幕截图所示。我的问题是,我只希望成员名称是固定文本,而不是在选择框中。然而,我知道的唯一一种永远迭代这个$member的方法是通过EntityType。我走错方向了吗 控制器: public function batchInvoicesAction(Request $request) { $members = $em->getRepository('AppBundle:Member')->fin

我有下面的控制器和表单类型,它们循环生成每个成员的表单,如本屏幕截图所示。我的问题是,我只希望成员名称是固定文本,而不是在选择框中。然而,我知道的唯一一种永远迭代这个
$member
的方法是通过
EntityType
。我走错方向了吗

控制器:

public function batchInvoicesAction(Request $request)
     {
        $members = $em->getRepository('AppBundle:Member')->findActiveMembers();
        $batch = new InvoiceBatch();
        foreach ($members as $member) {
                    $invoice=new Invoice();
                    $invoice->setMemberId($member);
                    batch->addInvoiceId($invoice);
        }
        $form=$this->createForm(InvoiceBatchType::class, $batch);
        /* ... */
    }
/* ... */
->add('invoice_ids', CollectionType::class, array(
     'entry_type' => InvoiceType::class,
))
/* ... */
/* ... */
->add('member_id', EntityType::class, array(
          'class' => 'AppBundle:Member',
          'choice_label' => 'FullName',
          'label'=>'Member',
))
/* ... */
发票类型:

public function batchInvoicesAction(Request $request)
     {
        $members = $em->getRepository('AppBundle:Member')->findActiveMembers();
        $batch = new InvoiceBatch();
        foreach ($members as $member) {
                    $invoice=new Invoice();
                    $invoice->setMemberId($member);
                    batch->addInvoiceId($invoice);
        }
        $form=$this->createForm(InvoiceBatchType::class, $batch);
        /* ... */
    }
/* ... */
->add('invoice_ids', CollectionType::class, array(
     'entry_type' => InvoiceType::class,
))
/* ... */
/* ... */
->add('member_id', EntityType::class, array(
          'class' => 'AppBundle:Member',
          'choice_label' => 'FullName',
          'label'=>'Member',
))
/* ... */
发票类型:

public function batchInvoicesAction(Request $request)
     {
        $members = $em->getRepository('AppBundle:Member')->findActiveMembers();
        $batch = new InvoiceBatch();
        foreach ($members as $member) {
                    $invoice=new Invoice();
                    $invoice->setMemberId($member);
                    batch->addInvoiceId($invoice);
        }
        $form=$this->createForm(InvoiceBatchType::class, $batch);
        /* ... */
    }
/* ... */
->add('invoice_ids', CollectionType::class, array(
     'entry_type' => InvoiceType::class,
))
/* ... */
/* ... */
->add('member_id', EntityType::class, array(
          'class' => 'AppBundle:Member',
          'choice_label' => 'FullName',
          'label'=>'Member',
))
/* ... */
你需要使用

您应该从表单生成器中删除
成员id
。 然后,使用事件,添加新的和带有相应成员默认值的只读文本字段


如果您需要简单的
文本
(无输入),则需要对装饰器/标签进行一些操作。

您好@po_taka,谢谢您-理想情况下,只需
文本
,无输入即可。我的想法是,不需要发送
EntityType
中的所有成员对象,这样我就可以循环每一行的每次迭代-特别是如果我不需要为页面上的每个选择框生成所有这些冗余的
(在“真实世界”页面中可能有几百行-那将是10000+
s,而不仅仅是我需要的100多行…!我不确定我是否理解你。你在listener中所做的是你的业务逻辑。你可以获取1行,你可以获取1kk行。我可能误解了听众,因为我对这一切还不熟悉。我的想法是:对于每个发票行,成员实体被循环并生成
{{Member.firstname}
针对每个成员…并针对每个发票行重复此操作。而我实际上需要的是针对每个发票行的
。我是否遗漏了什么?是的,事件将完成此工作。请参见以下示例:特别是最后一个示例。它们基于一些保存的数据添加/删除表单元素。简单的伪代码适用于您的帐户t:
$invoice=$event->getData();$event->getForm()->添加('member'、'text'、['data'=>$invoice->getMember()->>getName()];
因为我不知道您的业务模式,所以我无法进一步帮助您。