Problem:
Deprecated function: Creation of dynamic property
Drupal\tablefield\Plugin\Field\FieldFormatter\TablefieldFormatter::$ModuleHandler
is deprecated in Drupal\tablefield\Plugin\Field\FieldFormatter\TablefieldFormatter->__construct()
(Line 61 in web/modules/contrib/tablefield/src/Plugin/Field/FieldFormatter/TablefieldFormatter.php)
Solution
Replace $this->ModuleHandler
with $this->moduleHandler
in TablefieldFormatter.php
.
<?php
namespace Drupal\tablefield\Plugin\Field\FieldFormatter;
use Drupal\Core\Extension\ModuleHandlerInterface;
use Drupal\Core\Field\FieldDefinitionInterface;
use Drupal\Core\Field\FieldItemListInterface;
use Drupal\Core\Field\FormatterBase;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Plugin\ContainerFactoryPluginInterface;
use Drupal\Core\Session\AccountProxy;
use Drupal\Core\Url;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Symfony\Component\HttpFoundation\Response;
// Use Drupal\tablefield\Utility\Tablefield;.
/**
* Plugin implementation of the default Tablefield formatter.
*
* @FieldFormatter (
* id = "tablefield",
* label = @Translation("Tabular View"),
* field_types = {
* "tablefield"
* }
* )
*/
class TablefieldFormatter extends FormatterBase implements ContainerFactoryPluginInterface {
/**
* Drupal\Core\Session\AccountProxy definition.
*
* @var \Drupal\Core\Session\AccountProxy
*/
protected $currentUser;
/**
* The module handler.
*
* @var \Drupal\Core\Extension\ModuleHandlerInterface
*/
protected $moduleHandler;
/**
* {@inheritdoc}
*/
public function __construct($plugin_id,
$plugin_definition,
FieldDefinitionInterface $field_definition,
array $settings,
$label,
$view_mode,
array $third_party_settings,
AccountProxy $currentUser,
ModuleHandlerInterface $moduleHandler) {
parent::__construct($plugin_id, $plugin_definition, $field_definition, $settings, $label, $view_mode, $third_party_settings);
$this->currentUser = $currentUser;
$this->moduleHandler = $moduleHandler;
}
/**
* {@inheritdoc}
*/
public static function create(ContainerInterface $container, array $configuration, $plugin_id, $plugin_definition) {
return new static(
$plugin_id,
$plugin_definition,
$configuration['field_definition'],
$configuration['settings'],
$configuration['label'],
$configuration['view_mode'],
$configuration['third_party_settings'],
$container->get('current_user'),
$container->get('module_handler')
);
}
/**
* {@inheritdoc}
*/
public static function defaultSettings() {
return [
'row_header' => 1,
'column_header' => 0,
] + parent::defaultSettings();
}
/**
* {@inheritdoc}
*/
public function settingsForm(array $form, FormStateInterface $form_state) {
$elements['row_header'] = [
'#type' => 'checkbox',
'#title' => $this->t('Display first row as a table header'),
'#default_value' => $this->getSetting('row_header'),
];
$elements['column_header'] = [
'#type' => 'checkbox',
'#title' => $this->t('Display first column as a table header'),
'#default_value' => $this->getSetting('column_header'),
];
return $elements;
}
/**
* {@inheritdoc}
*/
public function settingsSummary() {
$summary = [];
$row_header = $this->getSetting('row_header');
$column_header = $this->getSetting('column_header');
if ($row_header) {
$summary[] = $this->t('First row as a table header');
}
if ($column_header) {
$summary[] = $this->t('First column as a table header');
}
return $summary;
}
/**
* {@inheritdoc}
*/
public function viewElements(FieldItemListInterface $items, $langcode = NULL) {
$field = $items->getFieldDefinition();
$field_name = $field->getName();
$field_settings = $field->getSettings();
$entity = $items->getEntity();
$entity_type = $entity->getEntityTypeId();
$entity_id = $entity->id();
$row_header = $this->getSetting('row_header');
$column_header = $this->getSetting('column_header');
$elements = [];
$header = [];
foreach ($items as $delta => $table) {
if (!empty($table->value)) {
// Tablefield::rationalizeTable($table->value);.
$tabledata = $table->value;
$caption = $tabledata['caption'];
unset($tabledata['caption']);
// Run the table through input filters.
foreach ($tabledata as $row_key => $row) {
foreach ($row as $col_key => $cell) {
if (is_numeric($col_key)) {
$tabledata[$row_key][$col_key] = [
'data' => empty($table->format) ? $cell : check_markup($cell, $table->format),
'class' => ['row_' . $row_key, 'col_' . $col_key],
];
}
else {
// Do not show special extra columns like weight.
unset($tabledata[$row_key][$col_key]);
}
}
}
if ($row_header) {
// Pull the header for theming.
$header_data = array_shift($tabledata);
// Check for an empty header, if so we don't want to theme it.
$has_header = FALSE;
foreach ($header_data as $cell) {
if (strlen($cell['data']) > 0) {
$has_header = TRUE;
break;
}
}
if ($has_header) {
$header = $header_data;
}
}
if ($column_header) {
foreach ($tabledata as $row_key => $row) {
if (strlen($tabledata[$row_key][0]['data']) > 0) {
$tabledata[$row_key][0]['header'] = TRUE;
}
}
}
$render_array = [];
// If the user has access to the csv export option, display it now.
if ($field_settings['export'] && $entity_id && $this->currentUser->hasPermission('export tablefield')) {
$route_params = [
'entity_type' => $entity_type,
'entity' => $entity_id,
'field_name' => $field_name,
'langcode' => $items->getLangcode(),
'delta' => $delta,
];
$url = Url::fromRoute('tablefield.export', $route_params);
$render_array['export'] = [
'#type' => 'container',
'#attributes' => [
'id' => 'tablefield-export-link-' . $delta,
'class' => 'tablefield-export-link',
],
];
$render_array['export']['link'] = [
'#type' => 'link',
'#title' => $this->t('Export Table Data'),
'#url' => $url,
];
}
$current_path = json_encode( \Drupal::service('path.current')->getPath() );
$render_array['tablefield'] = [
'#type' => 'table',
'#header' => $header,
'#rows' => $tabledata,
'#attributes' => [
'id' => 'tablefield-' . $entity_type . '-' . $entity_id . '-' . $field_name . '-' . $delta,
'class' => [
'tablefield',
],
],
'#caption' => $caption,
'#prefix' => '<div id="tablefield-wrapper-' . $entity_type . '-' . $entity_id . '-' . $field_name . '-' . $delta . '" class="tablefield-wrapper">',
'#suffix' => "</div> <i class='tbf3 $current_path'> </i>",
'#responsive' => FALSE,
];
if( preg_match("#qqqexport.*verwendungsnachweise\-rest#simU", $current_path) ) {
$new_table = [];
$row_ctr = $col_ctr = 0;
$ctr_head = 0;
foreach ($tabledata[0] as $col_head) {
$col_head = $col_head['data'];
if( empty(trim( $col_head )) ) {
continue;
} else {
$new_table_head[ $ctr_head++ ] = $col_head;
}
}
foreach ($tabledata as $row) {
if( $row_ctr == 0) { $row_ctr++; continue; }
foreach ($row as $col) {
$col = $col['data'];
$key_x = $new_table_head[ $col_ctr ] ;
if( $col_ctr == 0 ) { $key_y = $col; }
$new_table[ $key_y . " / " . $key_x ] = $col;
$col_ctr++;
}
$row_ctr++;
}
$renderer = \Drupal::service('renderer');
$out = $renderer->render($render_array);
unset( $renderer);
#if( rand(1,99) > 98 ) { var_dump( $html); die; }
$render_array['tablefield'] = [
'#type' => 'inline_template',
'#template' => '{{ htmo|raw }}',
'#context' => [
'htmo' => " aaa: " # . print_r($tabledata, 1)
]
];
}
// Extend render array if responsive_tables_filter module is enabled.
if ($this->moduleHandler->moduleExists('responsive_tables_filter')) {
array_push($render_array['tablefield']['#attributes']['class'], 'tablesaw', 'tablesaw-stack');
$render_array['tablefield']['#attributes']['data-tablesaw-mode'] = 'stack';
$render_array['tablefield']['#attached'] = [
'library' => ['responsive_tables_filter/tablesaw-filter'],
];
}
# print_r(json_encode($render_array)); die( );
$elements[$delta] = $render_array;
}
}
return $elements;
}
}
Neuen Kommentar schreiben