代码之家  ›  专栏  ›  技术社区  ›  Łukasz Zaroda

symfony 4:集合类型的“允许删除”选项的逻辑在哪里?

  •  0
  • Łukasz Zaroda  · 技术社区  · 6 年前

    所以,我想了解symfony的形式。我在核心代码中搜索“允许删除”选项,以查看它在引擎盖下的工作方式,但唯一能找到它的地方是 CollectionType 类和我在那里找不到任何逻辑。

    文档 states :

    如果设置为true,则如果现有项未包含在 提交的数据将正确地从 项目。

    在代码中,它到底在哪里影响提交的数据?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Dirk J. Faber    6 年前

    您可以在中找到函数 MergeCollectionListener.php 从第91行开始:

    // Remove deleted items before adding to free keys that are to be
    // replaced
    if ($this->allowDelete) {
            foreach ($itemsToDelete as $key) {
                unset($dataToMergeInto[$key]);
            }
        }
    

    $dataToMergeInto 设置为 $dataToMergeInto = $event->getForm()->getNormData(); 它指的是一个函数,其中 FormInterface.php :

    /**
     * Returns the normalized data of the field.
     *
     * @return mixed When the field is not submitted, the default data is returned.
     *               When the field is submitted, the normalized submitted data is
     *               returned if the field is valid, null otherwise.
     */
    public function getNormData();