function ContextFormTrait::getContextConfigFromFormValues
Creates a context config object from the submitted form values.
Parameters
\Drupal\Core\Form\FormStateInterface $form_state: The form state containing the submitted values.
\Drupal\Core\Plugin\Context\ContextDefinitionInterface[] $context_definitions: The context definitions of the plugin.
Return value
\Drupal\rules\Context\ContextConfig The context config object populated with context mappings/values.
2 calls to ContextFormTrait::getContextConfigFromFormValues()
- ActionForm::submitForm in src/
Form/ Expression/ ActionForm.php - Form submission callback to save changes for the expression.
- ConditionForm::submitForm in src/
Form/ Expression/ ConditionForm.php - Form submission callback to save changes for the expression.
File
-
src/
Context/ Form/ ContextFormTrait.php, line 143
Class
- ContextFormTrait
- Provides form logic for handling contexts when configuring an expression.
Namespace
Drupal\rules\Context\FormCode
protected function getContextConfigFromFormValues(FormStateInterface $form_state, array $context_definitions) {
$context_config = ContextConfig::create();
if ($form_state->hasValue('context_definitions')) {
foreach ($form_state->getValue('context_definitions') as $context_name => $value) {
if ($form_state->get("context_{$context_name}") == ContextDefinitionInterface::ASSIGNMENT_RESTRICTION_SELECTOR) {
$context_config->map($context_name, $value['setting']);
}
else {
// Each line of the textarea is one value for 'multiple' contexts.
if ($context_definitions[$context_name]->isMultiple()) {
// Textareas should always have \r\n line breaks, but for more
// robust parsing we should also accommodate just \n or just \r.
//
// Additionally, we want to remove leading and trailing whitespace
// from each line, and discard any empty lines.
$values = preg_split('/\\s*\\R\\s*/', $value['setting'], 0, PREG_SPLIT_NO_EMPTY);
$context_config->setValue($context_name, $values);
}
else {
$context_config->setValue($context_name, $value['setting']);
}
// For now, always add in the token context processor if it's present.
// @todo Improve this in https://www.drupal.org/node/2804035.
if ($this->getDataProcessorManager()
->getDefinition('rules_tokens')) {
$context_config->process($context_name, 'rules_tokens');
}
}
}
}
return $context_config;
}