问题描述
是否可以在满足某些条件(例如订单状态已发货,但可能是 smtl 其他)时禁用订单编辑?
或者禁用 LineItems 编辑但允许编辑订单信息?
尝试将此行添加到我当前的活动订单工作流程中,但一无所获:
entity_restrictions:
test:
attribute: entity
field: customer_notes
尝试将此添加到工作流程步骤之一,但又没有
entity_acl:
update: false
delete: false
entity_restrictions 和 entity_acl 没有在 oro 包的任何工作流.yml 中使用,那么该功能真的实现了吗?
解决方法
通过内置功能,您可以使用带有实体限制的工作流引擎,根据条件将某些表单字段设为只读:https://doc.oroinc.com/backend/entities-data-management/workflows/configuration-reference/#entity-restrictions-configuration
或者创建一个访问规则,在满足条件时隐藏编辑按钮并返回编辑页面的403代码:https://doc.oroinc.com/backend/security/access-rules/#backend-security-bundle-access-rules
,虽然我没有找到如何通过工作流禁用订单编辑,就像之前建议的那样,这里是如何通过操作配置禁用它的工作方式:
#MyBundle/Resources/config/oro/actions.yml
operations:
my_oro_order_edit
extends: UPDATE # this is for keeping all other properties same as in default
substitute_operation: UPDATE # replace UPDATE operation with current one
entities: ['Oro\Bundle\OrderBundle\Entity\Order'] # replacement will occur only if this operation will be matched by entity
for_all_entities: false
replace:
- preconditions
preconditions:
'@equal': [$internalStatus.id,'open']
这将使用 my_oro_order_edit 替换订单的 UPDATE 操作,其中允许 UPDATE 的条件已更改 - 因此订单查看页面和订单网格中的编辑按钮将仅针对“未结”订单出现。然而,这只影响按钮,它仍然可以通过直接链接打开订单编辑,这应该使用访问规则来禁止