如何从ZF2中的现有元素实例中提取工厂友好的表单元素配置数组?

埃迪古

我有一个Zend\Form\Element实例,我需要array从该实例中提取所有配置,序列化并在某处持久保存,稍后在表单元素工厂中重新使用以再次生成类似的实例。

是否存在任何编程方式来从zend Framework 2中已实例化的表单元素对象中获取完整的配置签名?

亚历克斯

最简洁的答案是不; 您将不得不自己动手。

您可以创建一个独立的类,该类可以接受任何元素并通过读取其公共方法返回正确的数组;这实际上是在逆转的功能FormFactory

一个非常简单的例子

class FormElementSerializer
{
    public function toArray(ElementInterface $element)
    {
        $spec = $this->getElementSpec($element);

        if ($element instanceof FieldsetInterface) {
            $spec = $this->getFieldsetSpec($element, $spec);
        }

        if ($element instanceof Form) {
            $spec = $this->getFormSpec($element, $spec);
        }

        return $spec;
    }

    protected function getElementSpec(ElementInterface $element)
    {
        $spec = array(
            'type' => $this->getElementType($element),
            'name' => $element->getName(),
            'options' => $element->getOptions(),
            'attributes' => $element->getAttributes(),
        );
        return $spec;
    }

    protected function getFieldsetSpec(FieldsetInterface $fieldset, array $spec)
    {
        foreach($fieldset->getElements() as $element) {
            $spec['elements'][] = $this->getElementSpec($element);
        }
        return $spec;
    }

    // deals with hydrators, fieldsets etc
    protected function getFormSpec(FormInterface $form, array $spec);

    // could be as simple as returning the class name
    protected function getElementType(ElementInterface $element);
} 

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在ZF2表单元素上设置自动对焦?

来自分类Dev

ZF2将自定义属性添加到选择表单元素中的选项

来自分类Dev

ZF2 + DoctrineModule:允许“ Doctrine表单元素ObjectSelect”为空

来自分类Dev

如何在javascript中的现有表单内添加新表单元素?

来自分类Dev

javascript - 如何从javascript中的数组中提取元素,然后使其成为全新的单元素数组?new

来自分类Dev

Zf2表单日期元素在不同浏览器中的问题

来自分类Dev

如何从数组中的元素中提取所有 td 的文本内容?

来自分类Dev

ZF2 /主义/无法从ArrayCollection中删除所有元素

来自分类Dev

如何从元胞数组中提取元素

来自分类Dev

ZF2-注册自定义表单元素

来自分类Dev

zf2 - 在表单/控制器工厂中获取控制器插件

来自分类Dev

如何在ZF2中模拟PUT表单?

来自分类Dev

从单元阵列中的每个单元中提取特定元素

来自分类Dev

从单元阵列中的每个单元中提取特定元素

来自分类Dev

ZF2向元素添加样式

来自分类Dev

ZF2向元素添加样式

来自分类Dev

我如何从数组中提取元素并在php中创建一个新元素?

来自分类Dev

猫鼬:如何更新数组中的现有元素?

来自分类Dev

如何从jQuery中的元素中提取href?

来自分类Dev

ZF2:如何翻译表单注释?

来自分类Dev

Zf2中的Bootstrap 3表单

来自分类Dev

ZF2表单中的按钮内容

来自分类Dev

Zf2中的Bootstrap 3表单

来自分类Dev

如何提取现有数组中元素的片段以生成新数组

来自分类Dev

ZF2表单HTML5数字元素不起作用

来自分类Dev

如何从带有 X 元素的 std::vector 中的 p 中提取 n 个元素

来自分类Dev

从Python中的单元素字典中提取键名

来自分类Dev

从Python中的单元素字典中提取键名

来自分类Dev

从元素中提取 XML 元素数组

Related 相关文章

  1. 1

    如何在ZF2表单元素上设置自动对焦?

  2. 2

    ZF2将自定义属性添加到选择表单元素中的选项

  3. 3

    ZF2 + DoctrineModule:允许“ Doctrine表单元素ObjectSelect”为空

  4. 4

    如何在javascript中的现有表单内添加新表单元素?

  5. 5

    javascript - 如何从javascript中的数组中提取元素,然后使其成为全新的单元素数组?new

  6. 6

    Zf2表单日期元素在不同浏览器中的问题

  7. 7

    如何从数组中的元素中提取所有 td 的文本内容?

  8. 8

    ZF2 /主义/无法从ArrayCollection中删除所有元素

  9. 9

    如何从元胞数组中提取元素

  10. 10

    ZF2-注册自定义表单元素

  11. 11

    zf2 - 在表单/控制器工厂中获取控制器插件

  12. 12

    如何在ZF2中模拟PUT表单?

  13. 13

    从单元阵列中的每个单元中提取特定元素

  14. 14

    从单元阵列中的每个单元中提取特定元素

  15. 15

    ZF2向元素添加样式

  16. 16

    ZF2向元素添加样式

  17. 17

    我如何从数组中提取元素并在php中创建一个新元素?

  18. 18

    猫鼬:如何更新数组中的现有元素?

  19. 19

    如何从jQuery中的元素中提取href?

  20. 20

    ZF2:如何翻译表单注释?

  21. 21

    Zf2中的Bootstrap 3表单

  22. 22

    ZF2表单中的按钮内容

  23. 23

    Zf2中的Bootstrap 3表单

  24. 24

    如何提取现有数组中元素的片段以生成新数组

  25. 25

    ZF2表单HTML5数字元素不起作用

  26. 26

    如何从带有 X 元素的 std::vector 中的 p 中提取 n 个元素

  27. 27

    从Python中的单元素字典中提取键名

  28. 28

    从Python中的单元素字典中提取键名

  29. 29

    从元素中提取 XML 元素数组

热门标签

归档