将zend_form渲染成json

时间:2016-02-11 14:55:19

标签: json zend-framework zend-form

我正在制作一个基于Zend_Frameword 1.x的“旧”软件的新版本, 这个项目使用zend_form创建versatiles表单我喜欢这个代码的方面,我想保留它。

但我需要跨域并使用javascript渲染html,所以我希望Zend_Form在JSONP中渲染。

过去我已经体验过很难理解的zend_form装饰器,我不认为我可以用它们来渲染JSON,所以,我认为唯一的方法就是扩展Zend_Form,来实现我的自己的渲染方法,但事件如此,我觉得这不容易......

我害怕Zend_Form我认为可能会在html中重新呈现表单并在javascript端解析它以创建足以随后将其与把手(javascript模板引擎)一起使用的结构

1 个答案:

答案 0 :(得分:1)

解析html对我来说似乎不是最理想的。

您最初的想法 - 创建自己的表单类Zend_Form并添加renderJsonp()方法 - 似乎是一种非常合理的方法。在最简单的情况下,渲染可以提取表单属性,然后迭代元素,提取其属性。

但是,请记住,Zend_Form实例不仅仅是表单属性和元素及其属性的列表。有可能的显示组(通常表示html字段集)和附加到表单元素的验证器。此外,即使您不更改用于渲染表单的装饰器,它们也是渲染的一部分。不反映那些装饰器的表单的json表示可能会以不同于Zend_View负责在视图脚本中呈现的方式呈现为html。

虽然有可能将显示组和验证器信息反映在json输出结构中,但您似乎不太可能轻松自动创建客户端验证,这与服务器端的验证完全相同侧。

我看到的一种方法是让客户端前端向特殊定义的路由发出AJAX请求,该路由呈现表单的完整html。虽然我不喜欢这种方法,但它确实具有表单基本上保持DRY的优点,呈现表单所需的所有信息都驻留在服务器端,但仍可供客户端使用。唯一缺少的是提取服务器端验证以便在客户端使用。

只是大声思考,所以不是一个好的答案,但评论似乎太长了。