OroCommerce:在某些情况下禁用订单编辑
OroCommerce: Disable order edit by some conditions
是否可以在满足某些条件(例如订单状态已发货,但可能是 smtl)时禁用订单编辑?
或者禁用 LineItems 编辑但允许编辑订单信息?
尝试将此行添加到我当前的活动订单工作流程中,但一无所获:
entity_restrictions:
test:
attribute: entity
field: customer_notes
尝试将此添加到工作流程步骤之一,但还是没有成功
entity_acl:
update: false
delete: false
entity_restrictions 和 entity_acl 未在任何 workflow.yml oro 捆绑包中使用,因此该功能真的实现了吗?
从内置功能中,您可以使用带有实体限制的工作流引擎,根据条件将某些表单字段设置为只读:https://doc.oroinc.com/backend/entities-data-management/workflows/configuration-reference/#entity-restrictions-configuration
或者创建访问规则隐藏编辑按钮和return编辑页面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 替换订单的更新操作,其中允许更新的条件已更改 - 因此订单视图页面和订单网格中的编辑按钮将仅针对 'Open' 订单出现。然而,这只影响按钮,它仍然可以通过直接 link 打开订单编辑,这应该使用访问规则
禁止
是否可以在满足某些条件(例如订单状态已发货,但可能是 smtl)时禁用订单编辑?
或者禁用 LineItems 编辑但允许编辑订单信息?
尝试将此行添加到我当前的活动订单工作流程中,但一无所获:
entity_restrictions:
test:
attribute: entity
field: customer_notes
尝试将此添加到工作流程步骤之一,但还是没有成功
entity_acl:
update: false
delete: false
entity_restrictions 和 entity_acl 未在任何 workflow.yml oro 捆绑包中使用,因此该功能真的实现了吗?
从内置功能中,您可以使用带有实体限制的工作流引擎,根据条件将某些表单字段设置为只读:https://doc.oroinc.com/backend/entities-data-management/workflows/configuration-reference/#entity-restrictions-configuration
或者创建访问规则隐藏编辑按钮和return编辑页面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 替换订单的更新操作,其中允许更新的条件已更改 - 因此订单视图页面和订单网格中的编辑按钮将仅针对 'Open' 订单出现。然而,这只影响按钮,它仍然可以通过直接 link 打开订单编辑,这应该使用访问规则
禁止