我即将启航在Zend的一些复杂的网页和表格。因为这对我来说是一个新的领域,我希望你能在我开始之前给我一些关于我的方法的反馈。
我所使用的信息通常是1-n,例如“1个组织有n个产品”。这是我正在研究的等式中的子部分。本质上,我希望使用户能够添加、查看、更新和删除单个URL中的子程序,如mydomain/products/index。
请注意,用户可以拥有“成员”或“管理”权限。
我看到的关键组成部分是:
Helper
下面是我的看法:
ACL是早期配置的(作为资源插件或早期运行的前端控制器插件),请求的操作(例如/products/index)使用扩展的isAllowed())帮助将操作推送到堆栈
这应该会加载初始页面。我认为,对于适当的特权用户,它将包括一个表的所有产品,完整的列‘删除’和‘编辑’的链接,再加上一个‘产品添加’表格底部的表。
当用户单击链接时:
/products/add)
)。
这听起来对吗?你会做什么不同的事?
我以前没有使用过ActionStack或AjaxContext助手,并且在jQuery方面的经验有限。不过,这一切看起来都相当简单。
非常感谢你的想法!
发布于 2011-10-20 12:41:25
在这种情况下,您不需要操作堆栈。操作堆栈是在一个请求期间分派多个操作。这里的内容是“只是”一个products/index操作,它加载所有可用的产品(视图可能将其呈现到一个表中)。所有其他操作都会在稍后的某个时刻,通过新的(XmlHttp或非)请求进行修补。
我们过去所做的就是用模态进行一些简单的形式。用户单击"add products“,jQuery对products/add执行XHR。此操作启用ajax (ajaxContext),并且只返回没有布局的表单。此响应作为模态对话框的内容呈现。该模式有两个按钮,一个用于提交表单,另一个用于取消表单。取消很简单(请参阅jQuery文档,只需关闭模式)。submit触发模式内的表单提交,然后关闭该模式。
有了这个设置,我们就相当灵活了。此外,还可以使用带有附加参数的<a>元素来呈现模式:
<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。对于后者,您需要用响应替换模式的内容,然后让用户再试一次。一个小渔获物,但却是非常重要的一个。
https://stackoverflow.com/questions/7707434
复制相似问题