gpt4 book ai didi

doctrine-orm - Zend Framework子集合无法正常保湿

转载 作者:行者123 更新时间:2023-12-03 11:20:50 25 4
gpt4 key购买 nike

我对子集合的值无法正确补充水分有疑问。我正在将zend framework 3与教义2结合使用。

由于必须复制很多代码,因此我将描述我在做什么,如果需要,我将使用代码进行更新。

我们有以下内容:

  • VillaForm,它是表单元素
  • VillaFieldset是Fieldset元素,是VillaForm
  • 的基本字段集
  • FacilityCategoriesFieldset是一个字段集,用于VillaFieldset中的Collection元素
        $this->add([
    'type' => 'Zend\Form\Element\Collection',
    'name' => 'facilityCategories',
    'options' => [
    'count' => 1,
    'allow_add' => true,
    'allow_remove' => true,
    'create_new_objects' => true,
    'target_element' => [
    'type' => FacilityCategoryFieldset::class,
    ],
    ],
    ]);
  • FacilitiesFieldset,它是一个字段集,用于FacilityCategoriesFieldset中的Collection元素
        $this->add([
    'type' => 'Zend\Form\Element\Collection',
    'name' => 'facilities',
    'options' => [
    'count' => 1,
    'allow_add' => true,
    'allow_remove' => true,
    'create_new_objects' => true,
    'target_element' => [
    'type' => FacilityFieldset::class,
    ],
    ],
    ]);

  • 所以从上面看
    VillaForm contains VillaFieldset that contains Collection of FacilityCategoriesFieldset which contains a Collection of FacilitiesFieldset
    假设我们在实际的表单页面上有此示例。
    - Row A of FacilityCategoriesFieldset 
    - Row 1 of FacilitiesFieldset
    - Row 2 of FacilitiesFieldset
    - Row 3 of FacilitiesFieldset

    - Row B of FacilityCategoriesFieldset
    - Row x of FacilitiesFieldset
    - Row y of FacilitiesFieldset
    - Row z of FacilitiesFieldset

    我的问题是,提交表单后,尽管帖子数据是正确的,但是在水化之后,结果将是这样的:
    - Row A of FacilityCategoriesFieldset 
    - Row x of FacilitiesFieldset
    - Row y of FacilitiesFieldset
    - Row z of FacilitiesFieldset

    - Row B of FacilityCategoriesFieldset
    - Row x of FacilitiesFieldset
    - Row y of FacilitiesFieldset
    - Row z of FacilitiesFieldset

    FacilityCategoriesFieldset的最后一行的FacilitiesFieldset的行用于FacilitiesFieldset的所有行。

    仅当具有包含另一个集合的集合的字段集时,才会发生这种情况。有没有人暗示我可能做错了什么?
    如果您需要,我会给您其他信息/代码。

    非常感谢。

    最佳答案

    您对Collection的实现略有偏离。您不应该将Collection的类型指定为FQCN,而是实际的对象(Fieldset)。

    试试这个:

    /**
    * @var CustomFieldset
    */
    protected $customFieldset;

    public function __construct(CustomFieldset $customFieldset) {
    $this->customFieldset = $customFieldset;
    }

    // init()
    $this->add(
    [
    'type' => Collection::class,
    'required' => true,
    'name' => 'customFieldset',
    'options' => [
    'label' => 'Custom fieldsets',
    'count' => 1,
    'allow_add' => true,
    'allow_remove' => true,
    'should_create_template' => true,
    'target_element' => $this->customFieldset,
    ],
    ]
    );

    关于doctrine-orm - Zend Framework子集合无法正常保湿,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51540614/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com