如何模拟 Zend\Form 提交而不在 Zend Framework 2/3 中显示表单?

Posted

技术标签:

【中文标题】如何模拟 Zend\\Form 提交而不在 Zend Framework 2/3 中显示表单?【英文标题】:How to simulate a Zend\Form submit without to display the form in Zend Framework 2/3?如何模拟 Zend\Form 提交而不在 Zend Framework 2/3 中显示表单? 【发布时间】:2018-05-28 13:44:33 【问题描述】:

我有一个复杂的嵌套(订单)Zend\Form,可以多次编辑。现在我想获取数据并稍后将其传递给新表单。 (这样我想实现一个简单的克隆机制。)

已经有效的是将请求数据转换为 JSON

if ($request->isPost()) 
    ...
    if(isset($request->getPost()->toArray()['store'])) 
        $this->storeFormJson(json_encode($request->getPost()));
    
    ...

...

并将其传递给一个空表单:

if ($this->params()->fromQuery('populate')) 
    $formDataJson = $this->getFormDataJson();
    $formDataArray = json_decode($formDataJson, true);
    $parameters = new Parameters($formDataArray);
    $request->setPost($parameters);
    $request->setMethod(Request::METHOD_POST);

好的。但它要求,用户需要先调用编辑表单,编辑它(如果需要),然后将数据发送到服务器(通过提交表单)。由于目标是动态创建克隆,因此我需要一种方法来模拟这些步骤。

如何获取通常通过表单提交传递的数据,而不是真正的提交?

【问题讨论】:

【参考方案1】:

一个想法是创建一个新表单 F2,其中所有字段都被隐藏,使用填充的表单 F1 中的值填充 F2,将呈现的 F2 表单交付给客户端,并添加自动提交的客户端 javascript现在在页面加载时填充 F2 表单。只是大声思考......

【讨论】:

以上是关于如何模拟 Zend\Form 提交而不在 Zend Framework 2/3 中显示表单?的主要内容,如果未能解决你的问题,请参考以下文章

重定向后保留 Zend Form 对象

Zend Form - 一页中的多个表单和(CSRF)令牌验证

如何使用 Zend Form Decorator 将所有输入和标签放入 div?

验证 Zend\Form\Element\Collection

div中的Zend Form元素

Zend Form 装饰器的麻烦