-
Notifications
You must be signed in to change notification settings - Fork 258
/
commerce.api.php
82 lines (77 loc) · 2.86 KB
/
commerce.api.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?php
/**
* @file
* Hooks provided by the Commerce module.
*/
/**
* @addtogroup hooks
* @{
*/
/**
* Perform alterations before an inline form is rendered.
*
* In addition to hook_commerce_inline_form_alter(), which is called for all
* inline forms, there is also hook_commerce_inline_form_PLUGIN_ID_alter()
* which allows targeting an inline form via plugin ID.
*
* Generic alter hooks are called before the plugin-specific alter hooks.
*
* @param array $inline_form
* The inline form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
* @param array $complete_form
* The complete form structure.
*
* @see hook_commerce_inline_form_PLUGIN_ID_alter()
*
* @ingroup commerce
*/
function hook_commerce_inline_form_alter(array &$inline_form, \Drupal\Core\Form\FormStateInterface $form_state, array &$complete_form) {
/** @var \Drupal\commerce\Plugin\Commerce\InlineForm\InlineFormInterface $plugin */
$plugin = $inline_form['#inline_form'];
if ($plugin->getPluginId() == 'customer_profile') {
if ($inline_form['#profile_scope'] == 'billing' && !isset($inline_form['rendered'])) {
// Modify the billing profile when in "form" mode.
$inline_form['address']['widget'][0]['#type'] = 'fieldset';
// Individual address elements (e.g. "address_line1") can only
// be accessed from an #after_build callback.
$inline_form['address']['widget'][0]['address']['#after_build'][] = 'your_callback';
}
}
}
/**
* Provide a plugin-specific inline form alteration.
*
* Modules can implement hook_commerce_inline_form_PLUGIN_ID_alter()
* to modify a specific inline form, rather than implementing
* hook_commerce_inline_form_alter() and checking the plugin ID.
*
* Plugin-specific alter hooks are called after the general alter hooks.
*
* @param array $inline_form
* The inline form.
* @param \Drupal\Core\Form\FormStateInterface $form_state
* The current state of the form.
* @param array $complete_form
* The complete form structure.
*
* @see hook_commerce_inline_form_alter()
*
* @ingroup commerce
*/
function hook_commerce_inline_form_PLUGIN_ID_alter(array &$inline_form, \Drupal\Core\Form\FormStateInterface $form_state, array &$complete_form) {
// Modification for the inline form with the given plugin ID goes here.
// For example, if PLUGIN_ID is "customer_profile" this code would run only
// for the customer profile form.
if ($inline_form['#profile_scope'] == 'billing' && !isset($inline_form['rendered'])) {
// Modify the billing profile when in "form" mode.
$inline_form['address']['widget'][0]['#type'] = 'fieldset';
// Individual address elements (e.g. "address_line1") can only
// be accessed from an #after_build callback.
$inline_form['address']['widget'][0]['address']['#after_build'][] = 'your_callback';
}
}
/**
* @} End of "addtogroup hooks".
*/