我有一个 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 属性?
编辑:
我发现了一个为什么会发生这种情况的问题。
我把一个数据放到商店类别收藏类型
public function onPreSetData(FormEvent $event) { $data = [ 'categories' => $this->categoryRepository->findAll() ]; $event->setData($data); }
但是当我尝试接收数据时:
class ShopCategoryType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options) { $builder /** fields */ ->addEventListener(FormEvents::POST_SET_DATA, function(FormEvent $formEvent) { dump($formEvent->getData()); }); }
结果是:
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 表示第一个商店类别