Symfony Form Collection - 如何获取实体 ID?



我有一个 ShopCategoryCollectionType,它只将 ShopCategoryType 存储为集合。

我需要访问单个商店类别的 id 才能生成实体的编辑路径。

我已经创建了用于显示商店类别小部件的自定义小部件

{{ dump(form.vars.data) }}

返回:

ShopCategory {#7325 ▼
-id: 13
-name: "items items"
-slug: "items-items"
-status: 1
-products: PersistentCollection {#7445 ▶}
-position: 0
}

但是当我尝试访问实体的属性时

{{ dump(form.vars.data.anyAttribute) }}

我得到了:

Impossible to access an attribute ("name") on a null variable.

如何获取商店类别实体的 id 属性?


编辑:

我发现了一个为什么会发生这种情况的问题。

  1. 我把一个数据放到商店类别收藏类型

    public function onPreSetData(FormEvent $event)
    {
    $data = [
    'categories' => $this->categoryRepository->findAll()
    ];
    $event->setData($data);
    }
    
  2. 但是当我尝试接收数据时:

    class ShopCategoryType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
    $builder
    /** fields */
    ->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $formEvent) {
    dump($formEvent->getData());
    });
    }
    
  3. 结果是:

    In ShopCategoryType.php line 30:
    null
    In ShopCategoryType.php line 30:
    ShopCategory {#7574 ▼
    -id: 20
    In ShopCategoryType.php line 30:
    ShopCategory {#7575 ▼
    -id: 21
    In ShopCategoryType.php line 30:
    ShopCategory {#7576 ▼
    -id: 22
    /** and rest of objects */
    }
    

为什么我在第一次转储时得到空?

您可以通过表单twig访问当前数据form.vars.value

form.vars.value.{fieldName}

例如:

form.vars.value.name

您可以显示所有字段名称,如下所示:

dump(form.vars.value)

假设你的主FormType中有这个ShopCategoryCollectionType,并且{{ form }}点到这个FormType

窗体类型>> 商店类别集合类型

>> 商店类别类型

,使用以下方法访问集合的条目:

{{dump(form.children.shopCategories.vars.value[0].id)}}

其中,0 表示第一个商店类别

相关内容

  • 没有找到相关文章

最新更新