0

我有 2 张桌子:Order(s)Product(s). 我有第三个连接它们:OrdersProducts。我想一次保存几个模型,OrdersProducts如下所示:

我想选择一个 Order nr,然后从一个中grid,选择几个productsadjust amounts然后全部保存。

我的问题是,如果出现验证错误,我无法以适当的方式向用户显示。

最好的办法是在表格上显示它,但我不知道如何将第 3 个模型包含到表格中。我已经有了form,我可以一次保存几个(或多个)模型,但是如果出现错误,例如:an amount is missing,我不知道如何告诉用户。

现在保存已经完成,除了那些有错误的,但是这样用户必须一直检查是否所有的行都被保存了,这将是无稽之谈。

最好的办法是在表单上显示用户,在网格中突出显示有问题的行(或任何其他方式表明这个或那个特定的行或字段存在问题)

这有什么意义吗?如果是的话,什么可以是一个好的(和简单的......?)解决方案?

非常感谢!BR c

4

3 回答 3

0

有用!我已经设法弄清楚如何制作它。这有点棘手,不是一个非常优雅的解决方案,但它基本上可以按我的预期工作。只剩下几个小瑕疵需要打磨。http://www.yiiframework.com/forum/index.php/topic/44002-multiple-model-save/ 如果有人发现任何理论错误,请告诉我。

于 2013-07-01T10:05:47.893 回答
0

我花了好几次才意识到你在做什么。这是一个基本的订单输入问题。通常这是通过创建订单,然后一一创建订单详细信息来解决的。您可以在创建它们时在网格上显示它们。让我感到困惑的是,您似乎已经创建了一堆空订单,并且正在尝试对订单进行某种多对多的产品分配。这使事情复杂化了太多。

最好:

  1. 创建一个新订单。这可以是当用户选择要放入购物车的第一个项目时,或者只是通过启动填充订单标题信息的创建订单屏幕。
  2. 将项目添加到新创建的订单。再次,这可以是添加到购物车的第一个项目,或者您只需单击一个按钮即可调出一个创建表单,该表单只需将单个项目添加到订单中。添加每个产品后,您可以对该产品执行验证。
  3. 重复步骤 2,直到所有产品都添加到订单中。

创建表单可以嵌入到带有网格视图和标题属性的页面中,并且可以使用 ajax 进程发布以允许为添加到订单中的每个产品更新网格,或者它可以是单独的离散表单页面,也可以是您返回产品页面并选择下一个产品(如购物车)的事情。但在每种情况下,您一次只添加和验证一个产品。多对多选择实际上只适用于您有少量值可供选择的配置场景,唯一需要的验证是是否需要选择。

于 2013-06-28T13:29:02.267 回答
0

使用CFormModel验证用户输入的数据。向表单模型添加一个函数,该函数验证数据,然后将数据存储在不同的模型中。要在数据库级别捕获不可预见的错误,您应该使用transactions

于 2013-06-28T15:15:59.223 回答