Important
You are browsing the documentation for version 4.2 of OroCommerce, OroCRM and OroPlatform, which is no longer maintained. Read version 5.1 (the latest LTS version) of the Oro documentation to get up-to-date information.
See our Release Process documentation for more information on the currently supported and upcoming releases.
Actions and Conditions in Operations¶
ActionBundle provides several actions and conditions, besides those that are in the Action Component.
Actions¶
Run Action Group @run_action_group.
Class: Oro\Bundle\ActionBundle\Action\RunActionGroup
Alias: run_action_group
Description: Runs named [action group](./action-groups.md) with passed parameters.
Options:
result - (optional) property path where the action group execution context value is allocated
results - (optional) property path where the results from action-group-context are mapped to current context keys
action_group - action group name
parameters_mapping - map of parameters which are passed to the action_group context from the current one
Configuration Example
- '@run_action_group':
result: $.result
results:
result_entity_id: $.demo_new_attribute
action_group: acme_demo_action_group
parameters_mapping:
entity_class: Acme\Bundle\DemoBundle\Entity\User
entity_id: $.user.id
This configuration executes configured action group with the acme_demo_action_group name and parameters displayed under the parameters_mapping section. After the execution of action group, processed ActionData (e.g. context) are returned and assigned to the $.result attribute of the caller context. And $.result_entity_id acquires the value of $.demo_new_attribute from the Action Group’s context.
Please note that all parameters must pass validation and be accessible under root node of ActionData in the action_group execution body. E.g., $.entity_class and $.entity_id respectively to their names. See the Action Groups documentation for more details.
Format Name¶
Class: Oro\Bundle\ActionBundle\ActionFormatName
Alias: format_name
Description: Format entity name based on locale settings.
Parameters:
attribute - target path where the action results are saved;
object - entity;
Configuration Example
- '@format_name':
attribute: $.result.formattedCustomerName
object: $cart.customer
Create Date¶
Class: Oro\Bundle\ActionBundle\Action\CreateDate
Alias: create_date
Description: Create DateTime object based on date string
Parameters:
date - (optional) date as a string. The current date by default;
attribute - target path where the action results are saved.
Configuration Example
- '@create_date':
attribute: $sales_funnel_start_date
OR
- '@create_date':
conditions:
# optional condition configuration
parameters:
attribute: $sales_funnel_start_date
date: '2014-04-01' # must use quotes because date parameter requires string value
Copy Values¶
Class: Oro\Component\Action\Action\CopyValues
Alias: copy_values
Description: Copies the values from a context or an object to the provided attribute and behaves the same as the array_merge PHP function.
- '@copy_values': [$.to, $.from1, $.from2, {key: 'value'}]
Resolve Destination Page¶
Class: Oro\Bundle\ActionBundle\Action\ResolveDestinationPage
Alias: resolve_destination_page
Description: Resolves the URL redirection activity by a route name from the entity configuration using the routeName or routeView parameters.
Options:
destination / 0 - the route name specified in the @Config annotation of an entity
entity / 1 - (optional) property path of the original entity (by default, equals to entity)
attribute / 2 - (optional) target property path where the action results are saved (by default, equals to redirectUrl)
Configuration Example
- '@resolve_destination_page': view
OR
- '@resolve_destination_page': ['view', $.entity, $.attribute]
OR
- '@resolve_destination_page':
name: index
entity: $.data.entity
OR
- '@resolve_destination_page':
name: index
entity: $.entity
attribute: $.attribute
Allowed values for the destination parameter:
for the index page (routeName) value can be name
for the view page (routeView) value can be view
Duplicate¶
Class: Oro\Bundle\ActionBundle\Action\DuplicateEntity
Alias: duplicate, duplicate_entity
Description: Duplicate entity object
Options:
entity - (optional) a property path of the original entity (by default, the getEntity() method is used from context)
target - (optional) a property path of the original entity, alias for entity
settings - (optional) a list of filters and matchers to be applied to
attribute - a target property path where the action results are saved
Filters and Matchers:
Available filters: setNull, keep, collection, emptyCollection, replaceValue, and shallowCopy. Available matchers: property, propertyName, and propertyType.
For more information, please refer to the DeepCopy documentation.
Configuration Example
- '@duplicate':
target: $.entity
attribute: $.entityCopy
settings:
- [[setNull], [propertyName, [id]]]
- [[collection], [propertyName, [items]]]
- [[replaceValue, $.currentUser], [propertyName, [user]]]
- [[keep], [propertyName, [owner]]]
- [[shallowCopy], [propertyType, ['\DateTime']]]
- [[keep], [propertyType, ['%oro_user.entity.user%']]]
Conditions¶
Add Custom Condition¶
The conditions are based on the ConfigExpression component.
To add custom condition, simply add a service to DIC with the “oro_action.condition” tag, for example:
services:
Oro\Bundle\ActionBundle\ConfigExpression\Blank:
tags:
- { name: oro_action.condition, alias: blank|empty }
The “|” symbol in alias can be used to demonstrate several aliases. Note that service class must implement OroComponentConfigExpressionExpressionInterface.
Configurable Condition¶
Alias: - the option is configurable.
Description: - uses Condition Assembler to assemble conditions from passed configuration. This condition is NOT intended to be used in configuration of Action. But it can be used to create a condition based on configuration in runtime.
Options: - valid configuration of conditions.
Code Example
Code Example is a value of the “call_timeout” attribute. It is not blank, and it equals to 20.
$configuration = [
'@and' => [
'@not_blank' => ['$call_timeout'],
'@equal' => ['$call_timeout', 20]
]
];
/** @var \Oro\Bundle\ActionBundle\Model\Condition\ConditionFactory $conditionFactory */
$condition = $conditionFactory->create(Configurable::ALIAS, $configuration);
/** @var object $data */
$data->call_timeout = 20;
var_dump($condition->evaluate($data)); // will output TRUE