Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbone.js和CakePHP_Javascript_Cakephp_Backbone.js - Fatal编程技术网

Javascript Backbone.js和CakePHP

Javascript Backbone.js和CakePHP,javascript,cakephp,backbone.js,Javascript,Cakephp,Backbone.js,我感兴趣的是在我们的应用程序(构建在CakePHP框架上)中为一些更重复的页面CRUD结构实现Backbone.js。我一直试图抓住主干线,同时弄清楚它将如何与蛋糕一起工作,当涉及到分开双方的职责时,我有点不知所措 我是不是想在我的网站上植入一些不需要的东西?这种堆栈结构有没有优先权?我洗耳恭听。我现在实际上正在处理同样的情况(虽然使用Python/Flask,但同样的概念应该适用于任何服务器端语言)。以下是我的应用程序中页面的工作流程。请注意,我不遵循单页应用程序格式;在我的应用程序中,每个主

我感兴趣的是在我们的应用程序(构建在CakePHP框架上)中为一些更重复的页面CRUD结构实现Backbone.js。我一直试图抓住主干线,同时弄清楚它将如何与蛋糕一起工作,当涉及到分开双方的职责时,我有点不知所措


我是不是想在我的网站上植入一些不需要的东西?这种堆栈结构有没有优先权?我洗耳恭听。

我现在实际上正在处理同样的情况(虽然使用Python/Flask,但同样的概念应该适用于任何服务器端语言)。以下是我的应用程序中页面的工作流程。请注意,我不遵循单页应用程序格式;在我的应用程序中,每个主要页面都是完全重新加载的

  • 用户请求一个页面,比如公司列表,/companys/listing/
  • 服务器执行路由,加载正确的控制器
  • 控制器从DB加载前X个公司
  • 公司编码为JSON
  • 加载其他元数据(如公司总数)并将其转换为JSON
  • 列表页面模板被加载,JSON被弹出到模板中的一个标记中。请注意,这里我不填写列表表或任何类似的内容,我让主干网来完成所有这些。我在这里填写JSON,这样客户就不必再为最初的一组公司发出第二次请求
  • 列表页已发送到客户端。服务器现在已完成
  • 客户端拥有启动所需的所有数据,因此我获取JSON并将其传递给我的主干网
  • 视图为模型创建一个集合,并管理一组表示列表中条目的子视图
  • 任何其他处理/视图创建都会发生,例如创建页面、上一页/下一页按钮等
  • 如果用户单击公司的下一页,我将向服务器(/companys/listing/page/1或其他内容)发出一个AJAX查询,返回一个新的JSON字符串和一组新的模型
  • 将新模型集发送到我的主干。视图刷新所有内容
  • 所以说真的,服务器只用于数据的实际加载和模板的初始发送。我喜欢它,因为它可以让我轻松地连接新的前端(比如,iPad应用程序或其他东西)

    对于一种形式,在非常宽泛的笔划中,我这样做:

  • 用户请求表单,/companys/edit/1
  • 服务器进行权限检查,加载条目,向客户端发送模板/JSON。服务器不使用数据填写表单
  • 客户端使用JSON来填写表单
  • 客户修改表单,点击提交
  • 它们的所有更改都应用于模型,模型被转换为JSON并使用AJAX发送到服务器
  • 服务器进行验证并向客户端发送错误消息(JSON格式),或者更新数据库并发送成功消息
  • 总之,我使用服务器从数据库中获取数据,进行服务器端验证(不能信任客户端),并更新数据库


    如果您有一些具体的问题,我很乐意尝试分享到目前为止我所学到的知识。

    评论,因为我没有一个完整的答案。我觉得主干最好是(休息-)api,因此您应该从CakePHP的角度来处理JSON请求和响应的所有操作。因此,更彻底地开发应用程序的api/平台端,然后将其作为访问点?我认为您可以将主干绑定为更像常规的CakePHP表单,使用标准表单提交,但使用api可能更合适、更有效ter with Backbone。我想这也取决于你想用Backbone实现什么目标。你可以用它做很多事情,但我想也只是形式验证。我怀疑我会在首页将JSON加载到Backbone中,你所说的证实了这一点。我很高兴知道我至少走在了正确的轨道上。非常感谢是答案。非常全面,给了我一个很好的开始wtih的过程。一点问题都没有。很高兴这很有帮助。嗨,凯文,回答得很好!顺便问一下,你如何处理权限问题?比如未授权?你发送什么类型的JSON数据?你如何显示?提交表单时其他类型的错误如何?嘿@kimsia,谢谢!当用户尝试加载页面时,我会在服务器端检查他们的权限。如果他们没有该页面的权限,我会发送一个401响应页面(一个漂亮的HTML页面,显示您没有权限)。当用户发送AJAX调用时,我会再次检查他们在服务器端的权限。如果他们没有权限,我会发送一个没有正文的401响应。然后,您可以捕获该响应(如果使用jQuery,这将是一个失败的AJAX调用),并根据需要显示一条漂亮的错误消息。对于表单,这非常类似。当他们提交表单时(使用AJAX),服务器检查其数据的有效性,如果不正确,则发送400响应。在该响应的主体中,我以JSON格式嵌入了良好的可读错误消息。因此类似于{“username”:“该用户名已使用,请尝试另一个。”,“password”:“您的密码必须至少为8个字符。”}