将 zend_form 渲染成 json

make zend_form render into json

我正在制作基于 Zend_Frameword 1.x 的 "old" 软件的新版本, 这个项目使用 zend_form 创建通用形式我喜欢代码的这方面,我想保留它。

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

过去我已经体验过 zend_form 的难以理解的装饰器,我不认为我可以使用它们来渲染 JSON,所以,我认为唯一的方法要去的地方是扩展Zend_Form,实现自己的render方法,不过这么一来,我感觉这并不容易...

我很害怕 Zend_Form 我在想也许可以在 html 中渲染表单并在 javascript 端解析它以创建一个足以随后使用的结构它与车把(javascript 模板引擎)会更容易

解析 html 对我来说似乎不是最佳选择。

您最初的想法 - 创建自己的表单 class 扩展 Zend_Form 并添加 renderJsonp() 方法 - 似乎是一个非常合理的方法。在最简单的情况下,您的渲染可以提取表单属性,然后遍历元素,提取它们的属性。

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

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

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

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