public function WebformTableRow::buildHtml in Webform 6.x
Same name and namespace in other branches
- 8.5 src/Plugin/WebformElement/WebformTableRow.php \Drupal\webform\Plugin\WebformElement\WebformTableRow::buildHtml()
Build an element as HTML element.
Parameters
array $element: An element.
\Drupal\webform\WebformSubmissionInterface $webform_submission: A webform submission.
array $options: An array of options.
Return value
array A render array representing an element as HTML.
Overrides WebformElementBase::buildHtml
File
- src/
Plugin/ WebformElement/ WebformTableRow.php, line 81
Class
- WebformTableRow
- Provides a 'webform_table_row' element.
Namespace
Drupal\webform\Plugin\WebformElementCode
public function buildHtml(array $element, WebformSubmissionInterface $webform_submission, array $options = []) {
$webform = $webform_submission
->getWebform();
$parent_key = $element['#webform_parent_key'];
$parent_element = $webform
->getElement($parent_key);
$parent_format = isset($parent_element['#format']) ? $parent_element['#format'] : 'table';
// Remove #states.
unset($element['#states']);
switch ($parent_format) {
case 'details-closed':
case 'details':
case 'fieldset':
$webform_plugin_id = $parent_format === 'details-closed' ? 'details' : $parent_format;
$element['#webform_plugin_id'] = $webform_plugin_id;
$element['#type'] = $webform_plugin_id;
$element['#format_item'] = $parent_format;
$element_plugin = $this->elementManager
->getElementInstance($element);
return $element_plugin
->buildHtml($element, $webform_submission, $options);
case 'table':
default:
foreach ($element as $column_key => $column_element) {
if (WebformElementHelper::property($column_key)) {
continue;
}
$column_element_plugin = $this->elementManager
->getElementInstance($column_element);
if ($column_element_plugin
->isContainer($column_element)) {
$column_build = $column_element_plugin
->buildHtml($column_element, $webform_submission, $options);
$element[$column_key] = [
'data' => $column_build,
];
}
elseif (!$column_element_plugin
->isInput($column_element)) {
$element[$column_key] = [
'data' => $column_element,
];
}
else {
$column_value = $column_element_plugin
->format('html', $column_element, $webform_submission, $options);
$element[$column_key] = is_array($column_value) ? [
'data' => $column_value,
] : [
'data' => [
'#markup' => $column_value,
],
];
}
}
return $element;
}
}