php - Symfony Form Collection - 如何获取实体 id?

标签 php forms symfony twig symfony-forms

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

我需要访问单个 ShopCategory 的 id 来生成实体的编辑路径。

我创建了用于显示 ShopCategoryWidget 的自定义小部件

        {{ 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.

如何获取 ShopCategory 实体的 id 属性?


编辑:

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

  1. 我将数据放入 ShopCategoryCollectionType

     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 */
    }
    

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

最佳答案

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

form.vars.value.{fieldName}

例如:

form.vars.value.name

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

dump(form.vars.value)

关于php - Symfony Form Collection - 如何获取实体 id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52906034/

相关文章:

javascript - 如何使用 parsley.js 验证 div 中的所有表单字段?

forms - 在 Symfony 2 中创建表单网格

php - 如何在使用 Doctrine 固定装置时获取数据库中的实体?

php - 按类别查询计数产品时出错

php - 在Elasticsearch中选择值大于 “>”的结果

javascript - MySQL查询后无法运行js命令

PHP 执行脚本时默认使用 --ansi

php - Flash、Facebook 和权限 - JS、PHP 或 AS3 SDK

java - Play 2.5 : Form validation - on error, 表单值为 "Optional.empty"

symfony - Doctrine2 "order by"在 "group by"之前