CakePHP初学者:需要建议,单个视图或多个部分形式的所有内容

时间:2013-03-09 22:34:25

标签: cakephp

提前感谢您提供的任何帮助以及对我当前网络编码体验的耐心。

背景:

我目前正在尝试为我的家庭业务开发基于Web的应用程序。我在C#中开发了这个系统的当前版本,但是我希望在基于Web的系统中学习cakephp和MVC模式。

当前问题: 我目前卡在一个应该照顾PurchaseTicket的控制器中。此票证将包含关联的客户,订单项,总计等。我一直在尝试为控制器开发基本的“添加()”功能,但是我遇到以下问题:

  • 我正在创建一个包含所有内容的视图:用于搜索客户的按钮,用于添加订单项的按钮以及保存按钮。由于我习惯于开发桌面应用程序,我想我可能会尝试将相同的逻辑转移到基于Web的应用程序。这是推荐还是可行的东西?

我遇到了“搜索客户”等基本问题。在New Ticket页面中,我将重定向到客户控制器,搜索然后将结果放入会话变量或将其发回给我,但是当我继续处理其他所需信息时,我最终会得到一些“意大利面”代码。我应该做多部分表格吗?如果我这样做,我打破了应用程序的视觉设计。

现在我最终实例化了我的PurchaseTicket模型并将其放入会话变量中。我这样做是为了保存中间数据但是我不确定实例化模型是否符合cakephp标准或MVC模式。

我为这个长度道歉,这是我作为会员的第一篇文章。

谢谢!

1 个答案:

答案 0 :(得分:0)

欢迎使用Stack Overflow!

所以听起来有几个问题,都有很开放的答案。我不知道这是否会最终得到答案,但这比我在评论中提供的信息更多,所以我在这里:

首先,如果你还没有,我建议你做CakePHP Blog Tutorial熟悉Cake,然后再直接转换现有的桌面应用程序。

其次,熟悉CakePHP's bake console。如果您使用它来开始使用应用程序的Web版本,它将为您节省大量时间。

我无法强调在尝试解决一些重大问题之前,在一个小项目上对MVC和CakePHP的理解是多么重要。

第三,网络应用的用户界面绝对不同于桌面应用。在CakePHP的情况下,没有任何东西在服务器上永久“运行”。整个CakePHP框架被实例化,并且随着对服务器的每个页面请求而死亡。当从桌面应用程序转换时,这可能是一个棘手的概念,其中所有内容都存储在内存中,并且对象的实例可以存在,只要您愿意。使用桌面应用程序,让用户更容易去做另一项任务(比如搜索客户),然后将结果发送回调用对象,其实例仍然存在。正如您所知,如果您尝试通过在会话中存储过多信息来模拟Web应用程序中的此功能,您很快就会得到意大利面条代码。

你可以使用AJAX(谷歌,如果你还不知道它)来更新页面的部分,并获得一个更简化的用户界面,这听起来像你需要做的事情。为了大致了解可能性,您可能需要查看Bamboo Invoice。它不是用CakePHP构建的,而是使用CodeIgniter构建的,CodeIgniter是另一个开源的PHP MVC框架。听起来Bamboo Invoice与您描述的内容有很多相似的功能(发票包含订单项,总计,客户等),因此它可以帮助您了解如何构建界面 - 以及如果你想深入了解源代码,你将如何实现你想要做的一些事情。

Bamboo Invoice使用Ajax为应用程序提供“一个视图,包含所有内容”的感觉,这听起来像你想要的。

第四,关于您的客户搜索情况的具体情况,将内容存储在会话变量中可能不是可行的方法。您可能希望使用自动完成字段,该字段在每次在字段中输入字符后向服务器发送Ajax请求,并显示服务器发回的建议/匹配客户的列表列表。请在此处查看示例:http://jqueryui.com/autocomplete/。实现自动完成并非完全直截了当,但整个网络上应该有大量的示例和教程。

最后,我显然不知道您的业务是做什么的,但是在构建自己的软件之前,您是否已经研究过可能适合您的现有软件?有很多优秀,灵活的基于网络的解决方案,价格非常合理,适用于企业的许多常见任务。与构建自己的解决方案的成本相比,可能会有更多的时间和金钱给您带来很好的结果。

无论哪种方式,祝你好运,并享受CakePHP!