首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend和jQuery -由许多动作组成的表单

Zend和jQuery -由许多动作组成的表单
EN

Stack Overflow用户
提问于 2011-10-10 00:04:07
回答 1查看 312关注 0票数 7

我即将启航在Zend的一些复杂的网页和表格。因为这对我来说是一个新的领域,我希望你能在我开始之前给我一些关于我的方法的反馈。

我所使用的信息通常是1-n,例如“1个组织有n个产品”。这是我正在研究的等式中的子部分。本质上,我希望使用户能够添加、查看、更新和删除单个URL中的子程序,如mydomain/products/index。

请注意,用户可以拥有“成员”或“管理”权限。

我看到的关键组成部分是:

Helper

  • jQuery

  • Zend
  • ActionStack Action Helper
  • AjaxContext Action

下面是我的看法:

ACL是早期配置的(作为资源插件或早期运行的前端控制器插件),请求的操作(例如/products/index)使用扩展的isAllowed())帮助将操作推送到堆栈

  • ,扩展的ActionStack帮助在将操作添加到堆栈(调用

  • )之前咨询ACL。

这应该会加载初始页面。我认为,对于适当的特权用户,它将包括一个表的所有产品,完整的列‘删除’和‘编辑’的链接,再加上一个‘产品添加’表格底部的表。

当用户单击链接时:

/products/add)

  • the

  • jQuery处理事件并向特定操作发送XHR请求(例如,特定于的操作(启用了适当的上下文),返回操作DOM所需的适当response
  • jQuery以合并新的内容

)。

这听起来对吗?你会做什么不同的事?

我以前没有使用过ActionStack或AjaxContext助手,并且在jQuery方面的经验有限。不过,这一切看起来都相当简单。

非常感谢你的想法!

EN

回答 1

Stack Overflow用户

发布于 2011-10-20 12:41:25

在这种情况下,您不需要操作堆栈。操作堆栈是在一个请求期间分派多个操作。这里的内容是“只是”一个products/index操作,它加载所有可用的产品(视图可能将其呈现到一个表中)。所有其他操作都会在稍后的某个时刻,通过新的(XmlHttp或非)请求进行修补。

我们过去所做的就是用模态进行一些简单的形式。用户单击"add products“,jQuery对products/add执行XHR。此操作启用ajax (ajaxContext),并且只返回没有布局的表单。此响应作为模态对话框的内容呈现。该模式有两个按钮,一个用于提交表单,另一个用于取消表单。取消很简单(请参阅jQuery文档,只需关闭模式)。submit触发模式内的表单提交,然后关闭该模式。

有了这个设置,我们就相当灵活了。此外,还可以使用带有附加参数的<a>元素来呈现模式:

代码语言:javascript
复制
<a href="products/add" data-title="Add a new product" data-submit="Add product">Add product</a>

我们使用数据标题来呈现模态的标题,并为提交按钮的值提交数据。如果已经实现了ACL,则XHR可以查看响应代码。对于403状态,内容只是一条消息,说明这是一个错误,不应该允许用户添加产品。实际上,您不应该有链接“添加产品”,但更好地实现403状态检查作为一个额外的措施。

接下来要解决的可能是你的1:m关系。例如,在products/add页面添加产品。在那里,你有一个<select>来选择组织。在<select>之后,就有一个“或添加一个新的组织”的链接。此链接的行为如下所述: modal、XHR、ajaxContext。表单提交后,您还将听取回复。您可以实现您的操作,使其在成功地将组织保存到数据库后返回JSON字符串。JSON被发送回浏览器,并在XHR的响应中获取。您可以编写一段使用JSON数据的代码(例如。它是一个organisation.id和organisation.name),将其注入select (<option value="id">Name</option>)并选择该选项。

这种方法是灵活的,可以成为通用的,并不是真的很难实现。您需要注意的唯一部分是表单错误。发布后,表单可能无效。这意味着响应可以是JSON返回,也可以是带有表单和错误消息的html。对于后者,您需要用响应替换模式的内容,然后让用户再试一次。一个小渔获物,但却是非常重要的一个。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7707434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档