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

CakePHP初学者:需要建议,在单个视图或多部分表单上的所有内容,cakephp,Cakephp,提前感谢您提供的任何帮助和耐心,我目前的网页编码经验 背景: 我目前正试图为我的家族企业开发一个基于web的应用程序。我已经用C#开发了这个系统的最新版本,但是我想让这个系统基于web,并在此过程中学习cakephp和MVC模式 当前问题: 我现在被困在一个负责处理购票的控制器里。此票据将有一个关联的客户、行项目、总计等。我一直在尝试为控制器开发一个基本的“add()”函数,但我遇到以下问题: 我正在创建一个包含所有内容的视图:一个用于搜索客户的按钮、一个用于添加行项目的按钮和一个保存按钮。由

提前感谢您提供的任何帮助和耐心,我目前的网页编码经验

背景:

我目前正试图为我的家族企业开发一个基于web的应用程序。我已经用C#开发了这个系统的最新版本,但是我想让这个系统基于web,并在此过程中学习cakephp和MVC模式

当前问题: 我现在被困在一个负责处理购票的控制器里。此票据将有一个关联的客户、行项目、总计等。我一直在尝试为控制器开发一个基本的“add()”函数,但我遇到以下问题:

  • 我正在创建一个包含所有内容的视图:一个用于搜索客户的按钮、一个用于添加行项目的按钮和一个保存按钮。由于我习惯于开发桌面应用程序,我想我可能会尝试将同样的逻辑转移到基于web的应用程序。这是推荐的还是可以做的
我遇到了一些基本问题,比如“搜索客户”。从New Ticket页面,我将重定向到customer controller,搜索结果,然后将结果放入会话变量中或将其发回,但当我继续处理其余所需信息时,我最终得到了一些“意大利面”代码。我应该做一个多部分的表格吗?如果我这样做,我就会破坏应用程序的视觉设计

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

很抱歉这么长,这是我作为会员的第一篇帖子


谢谢

欢迎使用堆栈溢出

听起来好像有几个问题,都有非常开放的答案。我不知道这是否会成为一个答案,但它的信息比我可以在评论中提出的更多,所以我来:

首先也是最重要的一点,如果你还没有,我建议你在直接转换现有的桌面应用程序之前,先做一些准备工作,熟悉一下蛋糕

第二,熟悉。如果您使用它开始使用应用程序的web版本,它将为您节省大量时间

在尝试解决一些实质性的问题之前,我不能强调在一个小项目上充分掌握MVC和CakePHP有多么重要

第三,web应用程序的UI与桌面应用程序完全不同。在CakePHP的情况下,服务器上没有永久“运行”的内容。整个CakePHP框架被实例化,并随着对服务器的每个页面请求而消亡。从桌面应用程序过渡到桌面应用程序时,这可能是一个棘手的概念,在桌面应用程序中,所有内容都存储在内存中,对象实例可以存在任意长的时间。使用桌面应用程序,用户可以更轻松地执行另一项任务(如搜索客户),然后将结果发送回调用对象,调用对象的实例仍然存在。正如您所发现的,如果您尝试在web应用程序中通过在会话中存储太多信息来模拟此功能,您很快就会得到意大利面条代码

您可以使用AJAX(如果您还不了解它,可以使用googleit)只更新页面的一部分,并获得一个更精简的UI,这听起来像是您需要做的事情。为了对各种可能性有一个大致的了解,您可能想看看。它不是用CakePHP构建的,而是用CodeIgniter构建的,CodeIgniter是另一个开源PHP MVC框架。听起来Bambol Invoice与您所描述的有很多类似的功能(发票包含行项目、总计、客户等),因此它可能会帮助您了解应该如何构造界面——如果您想深入了解源代码,您可以如何实现一些您想做的事情

Bambol Invoice使用Ajax给应用程序一种“一个视图,所有内容都在其中”的感觉,这听起来像是你想要的

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

最后,我显然不知道您的业务是什么,但在构建自己的软件之前,您是否研究过可能适合您的现有软件?有很多很棒的、灵活的基于web的解决方案,价格非常合理,用于企业的许多常见任务。可能有一些东西可以让您以比构建自己的解决方案所需的时间和金钱少得多的方式获得好的结果


不管怎样,祝你好运,享受CakePHP

谢谢乔舒亚,我很感谢你花时间来帮助我。我确实做了博客教程,它帮助我掌握了CakePHP的基础知识,但是我认为我的问题可能更多的是web开发概念和MVC模式。在AJAX方面,我确实希望在我的项目中使用它,但是我希望应用程序在没有javascript的情况下工作。关于竹子项目的好消息,我已经下载了该项目并将其添加到我的IDE中,我将查看我最大的“概念”现在,我想可能会出现这样的情况:将相关信息作为更大对象的一部分进行搜索,并尽可能保持我的代码干净和面向对象。您可能还想查看CakePHP搜索插件: