【发布时间】:2015-06-03 08:10:17
【问题描述】:
让我们管理一下,我有一个实体RestaurantOrder,其属性为status
status 可以取这些值
newacceptedbeing prepareddeliveredcancelled by customercancelled by kitchen
等等
现在我想要的是,当我在后端编辑一份餐厅订单时,呈现给我的status 列表取决于当前的status
我发现最简单的方法是让我的实体拥有一个方法 getPossibleStatusChange,它返回一个可能选择的数组(使用业务需求给出的复杂规则)
但我在 Symfony2 中没有找到 Choices 的选项说“从当前实体调用方法”
我已经知道如何从静态回调或调用Repository的回调中填充选项
有这样的选择吗?
【问题讨论】:
-
Afaik,没有。不过,您可以从表单中访问实体本身。 $builder->getForm()->getData() 将把实体交给你,你可以在其中访问它的方法。
-
根据我对您的问题的理解,我认为您可以在构建表单本身以实现业务规则时更改前缀处理中的可用状态(即表单订单状态上的“filterPossibleStatus(order_status)”构建时可能的选择)。您可以在包含表单的页面上为此添加 javascript 后缀处理,以检查显示的选项是否符合您的业务规则。(在渲染树枝时不要忘记传输您的实体,以便 JS)
-
@DerStoffel,谢谢,其实我认为它可以解决我的问题,让我试试。
-
@Answers_Seeker,谢谢,但是我想保留 javascript 作为最后的解决方案,因为使用 phpunit 将其集成到我们的功能测试中更加困难。
-
@DerStoffel 你的方法很有魅力,你能回答我吗?